如何从满足测试功能的 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);
我有一个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);