重写下划线 _.uniq

Re-writing underscore _.uniq

//for a sorted array
var iterator = function(value) { return value === 1; };
var numbers = [1, 2, 2, 3, 4, 4];

expect(_.uniq(numbers, true, iterator)).to.eql([1, 2]);

快速提问。我正在编写我自己的 _.uniq from the Underscore library 版本。我有一个无法通过的测试用例,仅仅是因为我不理解它。从以上测试条件来看;应用 _.uniq 如何产生 [1, 2] 作为最终结果?我不明白它试图让我在这里实施什么,因为它在任何意义上都不是独一无二的。有什么想法吗?

第三个参数是在 _.uniq 执行比较之前转换值的函数。

因此您的初始数组变为 [true, false, false, false, false, false],并且 _.uniq 根据此转换后的数组识别重复项。

由于只有两个唯一值 - true 和 false - 最终结果中只包含两个元素。