# 数组去重
function baseSortedUniq(array, iteratee) {
let seen;
let index = -1;
let resIndex = 0;
const {length} = array;
const result = [];
while (++index < length) {
const value = array[index];
const computed = iteratee ? iteratee(value) : value;
// 这里做了处理:当为第一个值的时候,肯定不会存在重复。
if (!index || !eq(computed, seen)) {
seen = computed;
result[resIndex++] = value === 0 ? 0 : value;
}
}
return result;
}
这一种方法的前提是数组一定是有序的。
数组迭代遍历时,需要将前一个值保存起来,和当前值比较。
如果和当前值不同,则这个值肯定之前没有出现过,将这个值放进结果集
如果相同了,则肯定是出现过了,不能放在结果集。
从而实现去重。
# 利用ES6 Set去重
如果不对数组限制任何要求(排序)。
lodash
的baseUniq
方法是利用Set
来实现去重的。