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

Chi*_*hin 21 jquery underscore.js

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

pluck_.pluck(list, propertyName) 
Run Code Online (Sandbox Code Playgroud)

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

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

谷歌今天对我帮助不大.任何指针都非常赞赏

Ale*_* K. 30

你可以用表达式来做;

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

  • 我准备使用上面的解决方案,但后来在测试中意识到它在某些边缘情况下与_.pluck不同.如果上面使用的'name'属性在数组中的任何对象中为null或未定义,则此函数将完全从arr输出中省略该元素,留下比开始时更小的数组.以下内容包括:var arr = []; $ .each(stooges,function(i,o){return arr.push(o ["name"]);}); (2认同)

Ott*_*ger 22

只写自己的

$.pluck = function(arr, key) { 
    return $.map(arr, function(e) { return e[key]; }) 
}
Run Code Online (Sandbox Code Playgroud)


Jam*_*ice 9

自己实现这个功能非常简单:

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

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