如何从满足测试功能的 JavaScript 迭代器中获取第一项

How to get the first item from an JavaScript iterator that satisfies a testing function

我有一个iterator object,我想得到第一个满足测试函数的元素

我知道如果我将迭代器转换为数组,我可以使用 Array.prototype.find。例如使用 [...ducks].find((duck) => duck.age >= 3) 语法。

但我不想将迭代器转换为数组,因为这很浪费。在我的例子中,我有很多鸭子,我需要一只旧的,只需要测试几次就可以找到。

我想知道是否存在一个优雅的解决方案。

没有内置任何东西,但您可以轻松地为它编写一个函数,将其粘贴到您的实用工具包中,然后重用它:

function find(it, callback) {
    for (const value of it) {
        if (callback(value)) {
            return value;
        }
    }
}

用法:

const duck = find(ducks, (duck) => duck.age >= 3);