A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

数组去重是面试经常遇到的,命中率高达85%+。下给大家整理出一些应对数组去重的方案
1、使用ES6的Set去重
[JavaScript] 纯文本查看 复制代码
function distinct(arr) {
  return Array.from(new Set(arr));
} 

2、使用ES6的Set去重(超级简化版)
[JavaScript] 纯文本查看 复制代码
[...new Set(arr)]

3、使用splice配合两重for循环去重
[JavaScript] 纯文本查看 复制代码
function distinct(arr) {
  for(let i = 0; i < arr.length; i++) {
          for(let j = i + 1; j < arr.length; j++) {
                  if(arr[i] === arr[j]) {
                          arr.splice(j, 1);
                          j--;
            }
          }
  }
  return arr;
}

4、使用for循环配合indexOf去重
[JavaScript] 纯文本查看 复制代码
 function distinct(arr) {
         let newArr = [];
         for(let i = 0; i < arr.length; i++) {
                 if(newArr.indexOf(arr[i]) === -1) {
                         newArr.push(arr[i]);
                 }
         }
         return newArr;
}

5、使用for循环配合sort排序去重
[JavaScript] 纯文本查看 复制代码
function distinct(arr) {
          arr = arr.sort();
          let newArr = [];
          for(let i = 0; i < arr.length; i++) {
                  if(arr[i] !== arr[i-1]) {
                      newArr.push(arr[i]);
                  }
          }
          return newArr;
  }

6、使用for循环配合includes去重
[JavaScript] 纯文本查看 复制代码
 function distinct(arr) {
          let newArr = [];
          for(let i = 0; i < arr.length; i++) {
                  if(!newArr.includes(arr[i])) {
                          newArr.push(arr[i]);
                  }
          }
          return newArr;
 }

7、使用filter配合indexOf去重
[JavaScript] 纯文本查看 复制代码
function distinct(arr) {
          return arr.filter((item,index, arr) => arr.indexOf(item) === index);
}





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马