Мне интересно, есть ли известный, встроенный / элегантный способ найти первый элемент массива 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);до этого return o != null;. Они в точности эквивалентны.