繁体   English   中英

如何根据循环内部的某些条件使用Array.map迭代来停止索引计数增量?

[英]How to stop index count increment using Array.map iteration based on certain condition inside loop?

比如说

Array.map((obj, index) => (
    condition === true ? 
    default index counter increment
    : do not increase index count
))

我希望我的计数器只有在我的条件成立的情况下才会增加,是否有任何解决方法? 当我喜欢基于对象向行添加替换颜色时我遇到问题,如果我想拒绝某些对象并且不创建任何行,即使行没有创建,仍然我的计数器增加,颜色适用于实际上不存在的行并产生UI缺陷。

您可以使用Array.prototype.forEach()并根据逐个应用于数组的所有元素的“条件”递增counter变量:

let counter = 0;
Array.forEach((o, i) => condition && counter++);

你可以使用Array#reduce和一个计数器,比如

var count = array.reduce(function (r, a, i) {
    return r + (condition);
}, 0);

而不是Array#map ,因为您需要单个值而不是具有所有undefined值的新数组。

暂无
暂无

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

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