Entspricht Underscore.js _.pluck in jQuery

Lesezeit: 1 Minute

Benutzer-Avatar
Kinn

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”]); });

    – Julia

    14. August 2014 um 20:35 Uhr

schreib einfach selber

$.pluck = function(arr, key) { 
    return $.map(arr, function(e) { return e[key]; }) 
}

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.

Benutzer-Avatar
micha_s

Im einfachen Fall:

var arr = stooges.map(function(v) { return v.name; });

Verallgemeinert:

function pluck(list, propertyName) {
    return list.map(function (v) { return v[propertyName]; })
}

Aber IMHO sollte man es nicht als Tool-Funktion implementieren, sondern den einfachen Fall verwenden stets.

Aktualisierung 2018:

var arr = stooges.map(({ name }) => name);

1035800cookie-checkEntspricht Underscore.js _.pluck in jQuery

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy