我想知道是否有一种已知的、内置的/优雅的方法来查找 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/