您现在的位置是:首页>学习分享
js-数组去重的几种方法 2019-08-28 152

数组去重在很多面试中都会被问到,这里简单说一下数组去重的几种方式。

有个朋友上次面试就被问到了,当时面试官给的题目是一句话数组去重(这里应该考的是es6 set去重,最简单的去重方法)

1、es6 set去重

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。(可以用于去重)

Set本身是一个构造函数,用来生成 Set 数据结构。

  let arrayA = [1,1,2,2,3,3,'a','a','T','y','k','r','r'];
  console.log([...new Set(arrayA)])

2、简单去重
创建一个空数组用来存放筛选后的元素  筛选的方法是通过比较遍历到当前元素是否在于新数组中 若不存在则push 存在则进行下一次循环
  const a = ['aaa','c43',5867,'wda','pps','c43','aaa','pps'];
  arraydr = (array=> {
      let temp = [];
      console.log(array);
      for (let i of array) {
          if (temp.indexOf(i) === -1) {
              temp.push(i);
          }
      }
      console.log(temp);
  }
  arraydr(a);

3、相邻去重
首先利用sort进行排序 然后去比较相邻位的元素 若为true则 push  反之进行下一次循环比较
  const a = ['aaa','c43',5867,'wda','pps','c43','aaa','pps'];
  arraydr2 = (array=> {
      let temp = [];
      array.sort();
      console.log(array);
      for (let i in array) {
          if (i === 0&&array[i] !== array[i+1]) {
              temp.push(array[i]);
          } else if (array[i] !== array[i-1]&&array[i] !== array[i+1]) {
              temp.push(array[i]);
          } else if (i === array.length - 1&&array[i] !== array[i-1]) {
              temp.push(array[i]);
          }
      }
      console.log(temp);
  }
  arraydr2(a);

4、数组下标法
该方法是利用indexOf求出元素在数组中首次出现的位置跟下标进行对比

  const a = ['aaa','c43',5867,'wda','pps','c43','aaa','pps'];
  arraydr3 = (array=> {
      let temp = [];
      for (let i = 0;i < array.length;i++){
          if (array.indexOf(array[i]) == i) {
              temp.push(array[i]);
          }
      }
      console.log(temp);
  }
  arraydr3(a);

如果你还有更多的方法可以在下面留言哦。多多指教。
文章评论
关注我们
  • 微信公众号
  • 我的微信

站点声明:

1、本网站文章部分出自互联网,如无意中侵犯了某个媒体或个人的知识产权,请来信(987354940@qq.com)告之,本网站将立即删除。

Copyright © www.zhangqingblog.com All Rights Reserved. 备案号:鄂ICP备18005731号-2