Kennt jemand ein “Pluck”-Plugin, das mit der Unterstrich-Array-Methode übereinstimmt?
pluck_.pluck(list, propertyName)
Eine bequeme Version des vielleicht häufigsten Anwendungsfalls für map: das Extrahieren einer Liste von Eigenschaftswerten.
var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];
_.pluck(stooges, 'name');
=> ["moe", "larry", "curly"]
Google hilft mir heute nicht viel weiter. Alle Hinweise sehr geschätzt
Sie können dies mit einem Ausdruck tun;
var arr = $.map(stooges, function(o) { return o["name"]; })
Ich wollte gerade die obige Lösung verwenden, stellte dann aber beim Testen fest, dass sie sich in einigen Grenzfällen von _.pluck unterscheidet. Wenn die oben verwendete Eigenschaft ‘name’ in einem beliebigen Objekt im Array null oder undefiniert ist, lässt diese Funktion dieses Element einfach vollständig aus der arr-Ausgabe weg und hinterlässt ein kleineres Array als das erste, mit dem es begonnen hat. Folgendes behandelt dies: var arr = []; $.each(Handlanger, Funktion(i,o) { return arr.push(o[“name”]); });
Es ist ganz einfach, diese Funktionalität selbst zu implementieren:
function pluck(originalArr, prop) {
var newArr = [];
for(var i = 0; i < originalArr.length; i++) {
newArr[i] = originalArr[i][prop];
}
return newArr;
}
Es iteriert lediglich über die Elemente des ursprünglichen Arrays (von denen jedes ein Objekt ist), ruft die von Ihnen angegebene Eigenschaft von diesem Objekt ab und platziert sie in einem neuen Array.
micha_s
Im einfachen Fall:
var arr = stooges.map(function(v) { return v.name; });