繁体   English   中英

如何根据条件在单个循环中增加多个值

[英]How can I increment multiple values in a single loop based on conditions

我有一个 object,它包含一些实体的总数,我需要在其中循环另一个对象数组,这些对象具有我想要检查的一些 boolean 属性,如果为真,那么我想增加totals ZA8CFDE6331BD59EB62AC96F891ZC4 中的相关计数器。

下面是我正在尝试做的一个简单示例,并且工作正常,但是我想知道如何以更清洁的方式实现这一点,可能使用 map/filter/reduce 等,但我仍然希望只需要循环通过数组一次并避免对其进行多次迭代

const totals = { a: 0, b: 0, c: 0 };

myArr.forEach((val) => {
  if (val.condition1) {
    totals.a++;
  }

  if (val.condition2) {
    totals.b++;
  }

  if (val.condition3) {
    totals.b++;
  }
});

这是一种检查对象数组( data )的给定条件数量(在数组checkFor中定义)的方法:

 const data=[{cond1:1,cond2:1},{cond1:1,cond3:1},{cond3:1,cond4:1},{cond2:1,cond4:1},{cond3:1,cond4:1},{cond1:1,cond2:1},{cond1:1,cond2:1},{cond5:1,cond7:1},{cond1:1,cond2:1}]; checkFor="cond1,cond2,cond3,cond4".split(","); const sums=data.reduce((a,o)=>{ checkFor.forEach(c=>{ if(o[c]){ a[c]??=0; a[c]++; } }) return a; }, {}); console.log(sums);

有很多方法可以在单个循环中增加多个变量

for (int i = 0; i != 5; ++i and ++j) 
do_something(i, j);

或者你也可以试试这个:

    int j = 0;
for(int i = 0; i < 5; ++i) {
    do_something(i, j);
    ++j;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM