Zastanawiam się, czy istnieje znany, wbudowany/elegancki sposób na znalezienie pierwszego elementu tablicy JS pasującego do danego warunku. Odpowiednikiem C# będzie List.Find.Jak znaleźć pierwszy element tablicy odpowiadający warunkowi boolowskiemu w JavaScript?
tej pory używam dwu-funkcyjny combo tak:
// 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);
};
A potem mogę użyć:
var result = someArray.findFirst(isNotNullNorUndefined);
Ale ponieważ istnieje so many functional-style array methods in ECMAScript, może tam coś tam już to lubisz? Wyobrażam sobie, że wiele osób musi implementować takie rzeczy przez cały czas ...
Nie ma wbudowany w metodzie, ale istnieją biblioteki narzędzie, które przybliżają tę funkcjonalność, takich jak http://documentcloud.github.com/underscore/ – kinakuta
Underscore.js wygląda naprawdę świetnie! I ma find(). Dzięki! –
Tak, że wiesz, możesz zmniejszyć to: 'return (typeof (o)! == 'undefined' && o! == null);' do tego 'return o! = Null;'. Są dokładnie równoważne. –