首页 > 解决方案 > 重写下划线_.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的下划线库版本。我有一个测试用例无法通过,因为我不理解它。从以上测试条件来看;应用程序如何_.uniq产生[1, 2]最终结果?我看不出它试图让我在这里实现什么,因为这在任何意义上都不是独一无二的。有任何想法吗?

标签: javascriptunderscore.js

解决方案


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

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

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


推荐阅读