gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:04:32 27 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);
<小时/>

旧答案:

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

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/

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