javascript - 如何在 JavaScript 中查找与 bool 条件匹配的数组的第一个元素?

标签 javascript arrays

我想知道是否有一种已知的、内置的/优雅的方法来查找 JS 数组中与给定条件匹配的第一个元素。 C# 等效项为 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);

但是既然有so many functional-style array methods in ECMAScript ,也许已经有这样的东西了?我想很多人必须一直实现这样的东西......

最佳答案

从 ES6 开始,就有了原生 find method对于数组;一旦找到第一个匹配项并返回值,就会停止枚举数组。

const result = someArray.find(isNotNullNorUndefined);
<小时/>

旧答案:

我必须发布一个答案来阻止这些过滤建议:-)

since there are so many functional-style array methods in ECMAScript, perhaps there's something out there already like this?

您可以使用some Array method迭代数组直到满足条件(然后停止)。不幸的是,它只会返回条件是否满足一次,而不是哪个元素(或在什么索引处)满足了条件。所以我们必须稍微修改一下:

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);

关于javascript - 如何在 JavaScript 中查找与 bool 条件匹配的数组的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60716867/

相关文章:

Java:命令行输入的总和给出数组*答案的长度

c++ - 将数组转换为 vector 的最简单方法是什么?

java - 如何在jsp中将数组打印到输入字段?

java - 初始化二维对象数组

javascript - 使用 D3.js 图表表示 Python 生成的数据

javascript - 表示 JSON 的最佳方式,它的数组中的每个元素都有重复键

javascript - 隐藏/显示 jquery 中的选择框选项?

javascript - 通过 jquery 添加的数据属性不可用于选择元素

javascript - swiper - 如何禁用嵌套的水平滑动器进一步滚动(边缘触摸释放)?

javascript - height 在 angularJS 指令内返回 0