相当于jQuery中的Underscore.js _.pluck

时间:2012-02-17 13:30:24

标签: jquery underscore.js

有没有人知道匹配下划线数组方法的'pluck'插件?

pluck_.pluck(list, propertyName) 

可能是map最常见的用例的便捷版本:提取属性值列表。

var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];
_.pluck(stooges, 'name');
=> ["moe", "larry", "curly"]

Google今天对我帮助不大。 任何指针都非常赞赏

4 个答案:

答案 0 :(得分:30)

你可以用表达式来做;

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

答案 1 :(得分:22)

只写自己的

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

答案 2 :(得分:9)

自己实现此功能非常简单:

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

它只是迭代原始数组的元素(每个元素都是一个对象),从该对象获取您指定的属性,并将其放在一个新数组中。

答案 3 :(得分:1)

简单来说:

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

更广义:

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

但是,恕我直言,你不应该把它当作工具函数来实现,而是使用简单的情况总是

2018更新:

var arr = stooges.map(({ name }) => name);