获取满足Javascript条件的数组中第一个元素的高阶方式?
假设我有一个包含这些元素的数组:[1, 2, 3, 0, 3]
;
我希望得到第一个大于2
的元素。
如何使用高阶函数完成此任务?
越紧凑越好。
如果我能在haskell上做,我会这样做:
head $ filter condition array
for example:
head $filter (> 2) [1, 2, 3, 0, 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]);
答案 1 :(得分:1)
下划线是一个包含有用实用函数的JavaScript库,其中包含一个名为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;
}