数组去重

52 阅读1分钟
 // 简单数组
  const arr2 = [1, 5, 3, 6, 4, 8, 1, 3, 6];
  
  //   使用现成
  console.log("Set", [...new Set(arr2)], Array.from(new Set(arr2)));
  
  function deduplication(arr) {
    return arr.reduce((cur, next) => {
      if (cur.indexOf(next) < 0) {
        cur.push(next);
      }
      return cur;
    }, []);
  }

  const arr3 = [
    { id: "1", name: "张三" },
    { id: "2", name: "李四" },
    { id: "3", name: "王五" },
    { id: "2", name: "李四" },
    { id: "1", name: "张三" },
  ];

  //   对象数组
  //   双循环
  function deduplication2(arr) {
    for (let i = 0; i < arr.length; i++) {
      for (let j = i + 1; j < arr.length; j++) {
        if (arr[i].id === arr[j].id) {
          arr.splice(j, 1);
          i--;
        }
      }
    }
    return arr;
  }
 
  //   reduce 迭代
  function deduplication3(arr) {
    const arrId = [];
    return arr.reduce((cur, next) => {
      if (arrId.indexOf(next.id) < 0) {
        cur.push(next);
        arrId.push(next.id);
      }
      return cur;
    }, []);
  }

  console.log("deduplication", deduplication(arr2));
  console.log("deduplication2", deduplication2(arr3));
  console.log("deduplication3", deduplication3(arr3));