Javascript 下划线uniq在解析中不起作用
我有一个简单的数组Javascript 下划线uniq在解析中不起作用,javascript,parse-platform,underscore.js,Javascript,Parse Platform,Underscore.js,我有一个简单的数组cars类cars 当我这样做的时候 var uniqCars = _.uniq(cars); 它不起作用uniqCars与cars完全相同。cars的长度是5,uniqCars的长度是5(当它应该是2时) 然而,当我这样做时: var uniqCars = _.uniq(cars, function (c) { return c.id; }); 它起作用了。我的问题是,为什么它不适用于前者,而适用于后者?我为什么要这么啰嗦?这是解析还是下划
cars
类cars
当我这样做的时候
var uniqCars = _.uniq(cars);
它不起作用uniqCars
与cars
完全相同。cars
的长度是5,uniqCars
的长度是5(当它应该是2时)
然而,当我这样做时:
var uniqCars = _.uniq(cars,
function (c) {
return c.id;
});
它起作用了。我的问题是,为什么它不适用于前者,而适用于后者?我为什么要这么啰嗦?这是解析还是下划线的问题?使用严格相等进行比较。除非数组中有多个对同一对象的引用,否则它们不会严格相等 使用===测试对象相等性,生成数组的重复自由版本。特别是,只保留每个值的第一次出现。如果您事先知道数组已排序,那么为isSorted传递true将运行更快的算法。如果要基于转换计算唯一项,请传递一个iteratee函数 为什么前者不起作用 因为,如果不传递comparator函数,默认情况下它将使用
==
操作符来比较对象。引用文件
使用===测试对象相等性,生成数组的重复免费版本如果要基于转换计算唯一项,请传递迭代函数
当您使用==
()时,除非两个对象是同一个对象或组成字符串的相同字符序列,否则没有两个对象是相同的。比如说,
console.assert(({} === {}) === false);
var obj = {};
console.assert(obj === obj);
console.assert("ab" === "a" + "b")
console.assert("ab" === 'a' + "b")
因此,解析不是特定的,但它是JavaScript中的预期行为。\uq.uniq(cars,“id”)
如果您想要一个不太详细的版本