分享数组去重的五种方式

数组去重的五种方式

<script>
      // 1 indexOf()  数组中查找元素的第一个索引,有返回值,没有返回 -1
      let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
      let newArr = [];
      function deduplication(array) {
        for (let i = 0; i < array.length; i++) {
          // 在新数组中查找 去重数组的每个值 indexOf()
          if (newArr.indexOf(array[i]) === -1) {
            newArr.push(array[i]);
          }
        }
        return newArr;
      }
      const res = deduplication(arr);
      console.log(res);

      // 2, sort 先把数组 排序,相同的元素在一起,再进行前后元素的比较,
     // 如果前后值不相等,把后值push到新数组中
      let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
      let newArr = [];
      function deduplication(array) {
        arr = arr.sort();
        let newArr = [arr[0]]; // 先把第一数组的元素赋值给新数组
        for (let i = 1; i < array.length; i++) {
          if (array[i - 1] !== array[i]) {
            newArr.push(array[i]); // 这样就不能获得第一个元素
          }
        }
        return newArr;
      }
      const res = deduplication(arr);
      console.log(res);

      // 3 filter  采用过滤器 返回true 把当前值存放到新数组中 false不存放 ,
        // 然后利用 indexOf(index ,0(从那个位置开始)) 查找数组中元素的第一个索引值
      let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
      let newArr = [];
      function deduplication(array) {
        newArr = arr.filter((item, index, array) => {
          // 查找数组中 元素的第一个索引值 ,如果有重复的 比较索引值时,
        // 仅仅拿元素的第一个索引值来与 filter中的item,的index 进行比较,肯定不相等 返回false
          return array.indexOf(item, 0) === index;
        });
        return newArr;
      }
      const res = deduplication(arr);
      console.log(res);

      // 4 includes 查找数组中是否包含某一个值,包含返回true,否则返回false
      let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
      let newArr = [];
      function deduplication(array) {
        for (let i = 0; i < array.length; i++) {
          // 查找 新数组中是否包含 需要去重数组的每个元素 不包含 取反,然后把改元素push到新数组
          if (!newArr.includes(array[i])) {
            newArr.push(array[i]);
          }
        }
        return newArr;
      }
      const res = deduplication(arr);
      console.log(res);

      // 5, // [Array.from()] :把伪数组或可迭代对象转换为数组  
            //  [new Set()] :把数组中重复的值去掉,返回一个Set 实例对象
      let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
      let newArr = [];
      function deduplication(array) {
        // 把数组去重 
        const setter = new Set(array)
        // 把 对象转换为 数组
        newArr = Array.from(setter)
        return newArr;
      }
      const res = deduplication(arr);
      console.log(res);
    </script>

有什么问题小伙伴们可以及时指出,谢谢 😋

posted @ 2020-08-23 11:01  AchengL  阅读(196)  评论(0编辑  收藏  举报