Ponownie zaimplementowałem własną wersję tego, czego potrzebuję, ale podejrzewam, że jest ona już zawarta w podkreśleniu, ponieważ jest tak prosta i tak ściśle powiązana z wieloma innymi funkcjami. Ale nie mogę wymyślić, jak to nazwać.Jaki jest obiektowy odpowiednik _.pluck
Zasadniczo potrzebuję wersji _.pluck, która działa z obiektami i zwraca obiekt zamiast tablicy (z przypisanymi kluczami).
Tak więc, na przykład, gdybym miał przedmiot takiego:
elements: {
steam: {
temperature: 100,
color: 'orange',
state: 'gas'
},
water: {
temperature: 50,
color: 'blue',
state: 'liquid'
},
ice: {
temperature: 0,
color: 'white',
state: 'solid'
}
}
chciałbym zadzwonić _.something(elements, 'temperature')
i mieć go zwrócić
{
steam: 100,
water: 50,
ice: 0
}
Zamiast _.pluck(elements, 'temperature')
który zwraca
[100, 50, 0]
Na czym polega ta transformacja i czy jest już uwzględniona w znaku podkreślenia? Sam napisałem szybką wersję z każdą pętlą jQuery, ponieważ bardziej kojarzę jQuery z podkreśleniem (zawartym poniżej), ale wolałbym użyć jej z biblioteki, jeśli to możliwe.
$.objPluck = function(obj, key) {
var ret = {};
$.each(obj, function(k, value) {
ret[k] = value[key];
});
return ret;
}
Istnieje 'Array.map' [metoda] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), która zasadniczo jest tym, co robisz , ale z obiektem – Ian
Czy istnieje sposób na zachowanie 'Array.map' zachowując klucze? –
Nie jestem pewien, czy rozumiem co masz na myśli. A tak czy inaczej, miałem na myśli tylko twoje początkowe zainteresowanie: "Ale nie mogę wymyślić, jak to nazwać". Z tablicami, nazwałbym to "mapowaniem" – Ian