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

Posted

技术标签:

【中文标题】如何根据循环内的特定条件使用 Array.map 迭代停止索引计数增量?【英文标题】:How to stop index count increment using Array.map iteration based on certain condition inside loop? 【发布时间】:2017-11-05 22:59:16 【问题描述】:

例如喜欢

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

我希望我的计数器仅在我的条件为真时增加,有什么解决方法吗?当我喜欢根据对象向行添加替代颜色时遇到问题,如果我想拒绝某些对象并且不创建任何行,即使该行没有创建,我的计数器仍然会增加,颜色适用于实际上不存在并产生 UI 缺陷的行。

【问题讨论】:

【参考方案1】:

您可以将Array#reduce 与计数器一起使用,例如

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何根据循环内的特定条件使用 Array.map 迭代停止索引计数增量?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据对象属性字符串过滤“ngFor”循环内的项目

shell脚本while循环语句

循环遍历记录集并根据条件将记录写入特定行

在 SSIS 中,如何在 Foreach NodeList 枚举器中使用 XPATH 循环遍历特定元素内的 XML

如何从while循环内的if条件中断while循环?

python基础:条件语句与循环语句