سؤال

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

هل كانت مفيدة؟

المحلول

You can do it with an expression;

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

نصائح أخرى

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top