Equivalent of Underscore.js _.pluck in jQuery
-
27-10-2019 - |
Pergunta
Does anyone know of a 'pluck' plugin that matches the underscore array method?
pluck_.pluck(list, propertyName)
A convenient version of what is perhaps the most common use-case for map: extracting a list of property values.
var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];
_.pluck(stooges, 'name');
=> ["moe", "larry", "curly"]
Google is not helping me much today. Any pointers much appreciated
Solução
You can do it with an expression;
var arr = $.map(stooges, function(o) { return o["name"]; })
Outras dicas
just write your own
$.pluck = function(arr, key) {
return $.map(arr, function(e) { return e[key]; })
}
It's quite simple to implement this functionality yourself:
function pluck(originalArr, prop) {
var newArr = [];
for(var i = 0; i < originalArr.length; i++) {
newArr[i] = originalArr[i][prop];
}
return newArr;
}
All it does is iterate over the elements of the original array (each of which is an object), get the property you specify from that object, and place it in a new array.
In simple case:
var arr = stooges.map(function(v) { return v.name; });
More generalized:
function pluck(list, propertyName) {
return list.map(function (v) { return v[propertyName]; })
}
But, IMHO, you should not implement it as tool function, but use the simple case always.
2018 update:
var arr = stooges.map(({ name }) => name);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow