Javascript 惰性可枚举

问题描述 投票:0回答:2

有没有办法将常规数组转换为惰性可枚举

我希望下面的代码只生成一个日志,而不是十个:

const items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];


items.map((i) => {
    console.log('expensive process');
    return i;
})
.findIndex((i) => true);
javascript arrays enumerable
2个回答
1
投票

您可以使用 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;
});

0
投票

自 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);

© www.soinside.com 2019 - 2024. All rights reserved.