数组去重

方法一:先排序再双指针去重

function quchong(arr) {
  if (arr.length <= 1) return arr;
  arr.sort((a, b) => a - b);
  let slow = 1;
  for (let fast = 1; fast < arr.length; fast++) {
    if (arr[fast] !== arr[fast - 1]) {
      arr[slow++] = arr[fast];
    }
  }
  return arr.slice(0, slow);
}

方法二:Set(最简)

function quchong(arr) {
  return [...new Set(arr)];
}

补充

补充:原实现的最后一行 arr = arr.splice(left) 直接把 arr 改成了「被切除的部分」,并且函数没有 return,外界拿到的是原数组本身。这里改为 arr.slice(0, slow) 并 return,结果正确且不修改入参数组。