Underscore.js,根据键值删除对象数组中的重复项

时间:2015-03-11 15:39:03

标签: javascript arrays object duplicates underscore.js

我有以下JS数组:

var myArray = [{name:"Bob",b:"text2",c:true},
               {name:"Tom",b:"text2",c:true},
               {name:"Adam",b:"text2",c:true},
               {name:"Tom",b:"text2",c:true},
               {name:"Bob",b:"text2",c:true}
               ];

我想删除名称为duplicates的索引,并重新创建一个具有不同名称的新数组,例如:

var mySubArray = [{name:"Bob",b:"text2",c:true},
                  {name:"Tom",b:"text2",c:true},
                  {name:"Adam",b:"text2",c:true},
                 ];

如您所见,我删除了“Bob”和“Tom”,只留下了3个不同的名字。这是否可以使用Underscore?怎么样?

2 个答案:

答案 0 :(得分:20)

_.uniq与自定义转换结合使用,像_.property('name')这样的函数可以很好地执行,或只是'name',正如@Gruff Bunny在评论中所说:

var mySubArray = _.uniq(myArray, 'name');

演示http://jsfiddle.net/nikoshr/02ugrbzr/

答案 1 :(得分:2)

另一个答案肯定是最好的,但是如果您对学习感兴趣,那么另外一个不长的时间会让您接触到更多的下划线方法:

var mySubArray = []

_.each(_.uniq(_.pluck(myArray, 'name')), function(name) {
    mySubArray.push(_.findWhere(myArray, {name: name}));
})
相关问题