我的代码如下
sortedProducts = sortedProducts.filter((product, i) => {
if (i + 1 > limit) {
return false;
}
return product.name.startsWith(search);
});
我想停止在index = limit
处的迭代,这样我就可以优化我的函数,因为不需要包含index > limit
的项,在本例中是否有类似于单词break
的内容?
3条答案
按热度按时间yws3nbqq1#
Array#filter
对每个项目运行回调:函数是一个 predicate ,用于测试数组的每个元素。返回一个值,该值强制为true以保留元素,否则强制为false。
因此,您可以先使用
Array#slice
获取子数组,而不是不必要地迭代其余项:另一种真正“打破”循环的方法:
9wbgstp72#
如果希望使用
Array.prototype
中的方法并简化这些方法,可以使用Array.prototype.some
我传递一个数组作为
this
到some
方法。你也可以用map
,forEach
,every
等等来做。除了
this.length
,您还可以附加一个任意属性,如this._iteration
,并递增该属性。其他选项是像@Majed建议的那样对数组进行切片,或者只是使用良好的旧循环并从中中断。rqqzpn5f3#
最有效的方法是将数组作为可迭代对象来处理,这样你就可以只迭代一次值,同时应用你想要的任意数量的操作。
以下示例基于iter-ops库: