开发者社区> 问答> 正文

如何在JavaScript中找到匹配布尔条件的数组的第一个元素?

我想知道是否有一种已知的,内置的/优雅的方法来找到匹配给定条件的JS数组的第一个元素。AC#等效项为List.Find。

到目前为止,我一直在使用这样的两功能组合:

// Returns the first element of an array that satisfies given predicate Array.prototype.findFirst = function (predicateCallback) { if (typeof predicateCallback !== 'function') { return undefined; }

for (var i = 0; i < arr.length; i++) {
    if (i in this && predicateCallback(this[i])) return this[i];
}

return undefined;

};

// Check if element is not undefined && not null isNotNullNorUndefined = function (o) { return (typeof (o) !== 'undefined' && o !== null); }; 然后我可以使用:

var result = someArray.findFirst(isNotNullNorUndefined); 但是,由于ECMAScript中有太多的函数式数组方法,也许已经有类似的东西了?我想很多人必须一直执行这样的事情...

展开
收起
保持可爱mmm 2020-01-16 17:05:55 517 0
1 条回答
写回答
取消 提交回答
  • 从ES6开始,存在数组的本地find方法。

    const result = someArray.find(isNotNullNorUndefined); 我必须发布答案以停止这些filter建议:-)

    既然ECMAScript中有很多函数式数组方法,那么也许已经有这样的东西了吗?

    您可以使用someArray方法来迭代数组,直到满足条件为止(然后停止)。不幸的是,它将仅返回是否满足条件一次,而不返回满足条件的元素(或索引)。因此,我们必须对其进行一些修改:

    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; } var result = find(someArray, isNotNullNorUndefined); 问题来源于stack overflow

    2020-01-16 17:08:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载