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

¿Fue útil?

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top