Equivalente de underscore.js _. empapado en jQuery
-
27-10-2019 - |
Pregunta
¿Alguien sabe de un complemento de 'desplume' que coincida con el método de matriz de subrayamiento?
pluck_.pluck(list, propertyName)
Una versión conveniente de lo que es quizás el caso de uso más común para el mapa: extraer una lista de valores de propiedad.
var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];
_.pluck(stooges, 'name');
=> ["moe", "larry", "curly"]
Google no me está ayudando mucho hoy. Cualquier consejo muy apreciado
Solución
Puedes hacerlo con una expresión;
var arr = $.map(stooges, function(o) { return o["name"]; })
Otros consejos
Solo escribe el tuyo
$.pluck = function(arr, key) {
return $.map(arr, function(e) { return e[key]; })
}
Es bastante simple implementar esta funcionalidad usted mismo:
function pluck(originalArr, prop) {
var newArr = [];
for(var i = 0; i < originalArr.length; i++) {
newArr[i] = originalArr[i][prop];
}
return newArr;
}
Todo lo que hace es iterar sobre los elementos de la matriz original (cada uno de los cuales es un objeto), obtener la propiedad que especifique de ese objeto y colóquelo en una nueva matriz.
En caso simple:
var arr = stooges.map(function(v) { return v.name; });
Más generalizado:
function pluck(list, propertyName) {
return list.map(function (v) { return v[propertyName]; })
}
Pero, en mi humilde opinión, no debe implementarlo como función de herramienta, pero use el caso simple siempre.
Actualización de 2018:
var arr = stooges.map(({ name }) => name);