有没有办法将常规数组转换为惰性可枚举?
我希望下面的代码只生成一个日志,而不是十个:
const items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
items.map((i) => {
console.log('expensive process');
return i;
})
.findIndex((i) => true);
您可以使用 Array.find 方法在找到正确的元素后立即停止。
const items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
items.find((i) => {
if(i){
console.log('expensive process');
}
return i;
});
自 ECMAScript 2025 以来,我们有了 iterator helpers,包括
map
和 find
方法,这样我们就可以得到“惰性”行为。对于您的示例,您可以使用 map
使用 find
返回的迭代器,如果其回调返回真值,则 map
返回的迭代器不会再消耗任何内容:
const items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const item = items.values().map((i) => {
console.log('expensive process');
return i;
})
.find((i) => true);
console.log("item is", item);