javascript - 下划线 uniq 在 Parse 中不起作用

标签 javascript parse-platform underscore.js

我有一个简单的数组 cars ,它是 Cars 类的 Parse 模型

当我这样做的时候

var uniqCars = _.uniq(cars);

这不起作用。 uniqCarscars 完全相同。 cars 的长度为 5,uniqCars 的长度为 5(本应为 2)。

但是,当我这样做时:

var uniqCars = _.uniq(cars,
    function (c) {
        return c.id;
    });

它有效。我的问题是,为什么它不适用于前者而适用于后者?为什么我必须说得这么冗长?这是解析或下划线的问题吗?

最佳答案

why doesn't it work with the former

因为,如果您不传递比较器函数,它默认使用 === 运算符来比较对象。引用 _.uniq文档,

Produces a duplicate-free version of the array, using === to test object equality. ... If you want to compute unique items based on a transformation, pass an iteratee function

当您使用 === ( Strict Equality operator ) 时,没有两个对象是相同的,除非它们是同一个对象或形成字符串的相同字符序列。例如,

console.assert(({} === {}) === false);
var obj = {};
console.assert(obj === obj);
console.assert("ab" === "a" + "b")
console.assert("ab" === 'a' + "b")

因此,它并不是 Parse 特有的,而是 JavaScript 中的预期行为。

关于javascript - 下划线 uniq 在 Parse 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670412/

相关文章:

javascript - 将一组回调函数减少为一个回调

javascript - 试图找到一种使用函数式编程风格转换此数组的漂亮方法

javascript - 如何在 TypeScript 中使用 moment-duration-format?

快速查询如何检测是否没有找到结果?

java - 解析匿名类没有实现抽象方法

Swift 解析 kPFCachePolicyNetworkOnly

javascript - 随时更改 underscore.js 模板变量

javascript - Stripe 和 NodeJS - 传递金额进行收费

javascript - 如何从异步调用返回响应?

javascript - 如何从 JavaScript 发出跨域 DELETE 请求?