我想知道是否有一种已知的,内置的/优雅的方法来找到匹配给定条件的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中有很多函数式数组方法,也许已经有类似的东西了?我想象很多人必须一直执行这样的事情...
return (typeof (o) !== 'undefined' && o !== null);
减少至this return o != null;
。它们完全等效。