# 数组去重

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去重

如果不对数组限制任何要求(排序)。

lodashbaseUniq方法是利用Set来实现去重的。

最近更新时间: 2020/9/6 11:30:38