gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:16:18 24 4
gpt4 key购买 nike

我想知道是否有一种已知的、内置/优雅的方法来查找与给定条件匹配的 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);

旧答案:

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

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/10457264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com