2013-03-30 58 views
1

我试图使用下划线独特的功能,但无法得到它的工作,这是我的测试代码:underscorejs独特不起作用

var foo = [ { "a" : "1" }, { "b" : "2" }, { "a" : "1" } ]; 

_.unique(foo, function(item, k, v){ 
    return item.a; 
}); 
console.log(foo); 

_.unique(foo, 'a'); 
console.log(foo); 

如这里refered:Removing duplicate objects with Underscore for Javascript和测试代码这里:http://jsfiddle.net/bingjie2680/wDvpM/2/,都打印出三个对象。我无法弄清楚问题,有人可以帮忙吗?非常感谢。

回答

4

uniq返回一个新的数组。当你省略第二个参数时,函数似乎并不喜欢它。

这工作:

var foo2 = _.unique(foo, false, function(item, k, v){ 
    return item.a; 
}); 

Demonstration

+0

感谢,但我仍然得到输出三个对象。 – bingjie2680

+0

对不起,我的回答的代码是正确的,但我链接到错误的小提琴。我修正了这一点。 –

+0

好吧,它的工作原理。非常感谢。 – bingjie2680