获取数组中满足 Javascript 条件的第一个元素的高阶方法

Higher Order way of getting the first element in an array that meets a condition in Javascript?

本文关键字:第一个 元素 高阶 方法 条件 数组 满足 Javascript 获取      更新时间:2023-09-26

在 Javascript 中获取数组中满足条件的第一个元素的高阶方法?

假设我有一个包含这些元素的数组:[1, 2, 3, 0, 3] ;

我想得到第一个大于2的元素。

如何使用高阶函数实现此目的?

越紧凑越好。

如果我能在哈斯克尔上做到这一点,我会做:

head $ filter condition array
for example:
head $filter (> 2) [1, 2, 3, 0, 3]

像这样(小提琴):

function isBigEnough(element) {
  return element >= 2;
}
alert([1, 2, 3, 0, 3].filter(isBigEnough)[0]);

或者使用匿名函数的简短方法,如评论(小提琴)中所述:

alert([1,2,3,0,3].filter(function(e){return e>=2;})[0]);

文档

下划线是一个具有有用实用程序函数的 JavaScript 库,包括一个名为 find 的库,它可以做你想要的。

http://underscorejs.org/#find

所以你可以写var x = _.find([1,2,3,0,3], function(v) { return v >= 2; });

可以使用 some Array 方法迭代数组,直到满足条件(然后停止)。不幸的是,它只会返回条件是否满足一次,而不是由哪个元素(或哪个索引)满足。

function find(arr, test, ctx) {
    var result = null;
    arr.some(function(el, i) {
        return test.call(ctx, el, i, arr) ? (result = el), true : false;
    });
    return result;
}