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

时间:2013-11-02 20:49:39

标签: javascript jquery arrays

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

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

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

如何使用高阶函数完成此任务?

越紧凑越好。

如果我能在haskell上做,我会这样做:

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

3 个答案:

答案 0 :(得分:2)

像这样(Fiddle):

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

或者使用评论(Fiddle)中提到的匿名函数的简短方法:

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

Documentation

答案 1 :(得分:1)

下划线是一个包含有用实用函数的JavaScript库,其中包含一个名为find的函数,它可以完全按照您的需要执行。

http://underscorejs.org/#find

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

答案 2 :(得分:0)

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