2012-02-17 8 views
21

¿Alguien sabe de un plucker 'pluck' que coincida con el método de matriz de subrayado?Equivalente a Underscore.js _.pluck en jQuery

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: extracción de una lista de valores de la 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 punteros apreciaron mucho

Respuesta

30

Puede hacerlo con una expresión;

var arr = $.map(stooges, function(o) { return o["name"]; }) 
+2

Estaba a punto de utilizar la solución anterior, pero luego me di cuenta de que es diferente de _.pluck en algunos casos extremos. Si la propiedad 'nombre' como se usa arriba es nula o indefinida en cualquier objeto de la matriz, esta función simplemente omitirá ese elemento de la salida arr por completo, dejando una matriz más pequeña que la que comenzó. Lo siguiente cubre esto: var arr = []; $ .each (stooges, function (i, o) {return arr.push (o ["nombre"]);}); – Julie

9

Es bastante simple de implementar esta funcionalidad a sí mismo:

function pluck(originalArr, prop) { 
    var newArr = []; 
    for(var i = 0; i < originalArr.length; i++) { 
     newArr[i] = originalArr[i][prop]; 
    } 
    return newArr; 
} 

único que hace es iterar sobre los elementos de la matriz original (cada uno de los cuales es un objeto), obtener la propiedad que especifique desde ese objeto y colóquelo en una nueva matriz.

22

acaba de escribir su propio

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

En caso simple:

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

más generalizada:

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

Pero, en mi humilde opinión, no debería poner en práctica como herramienta de función, pero use el caso simple siempre.

Cuestiones relacionadas