• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
社会优先于个人
博客园    首页    新随笔    联系   管理    订阅  订阅
js,javascript 数组去重

1. 利用set这种数据结构,类似数组。

Array.from(new Set(arr))
[...new Set(arr)]

弊端:无法去重成员是对象和数组。

2. 双层循环,一一比较

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--
	   }
	}
}

3. 单层循环+indexOf

for (var i = 0; i < arr.length; i++) {
        if (array .indexOf(arr[i]) === -1) {
            array .push(arr[i])
        }
    }

4. 先排序(sort),再单层循环,左右比较

arr = arr.sort()
var arrry= [arr[0]];
for (var i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i-1]) {
arrry.push(arr[i]);
}
}

5. 利用map数据结构,类似对象,但是键可以是任意数据类型,不能有重复的键名。

let map = new Map();
  let array = new Array();  // 数组用于返回结果
  for (let i = 0; i < arr.length; i++) {
    if(map .has(arr[i])) {  // 如果有该key值
      map .set(arr[i], true); 
    } else { 
      map .set(arr[i], false);   // 如果没有该key值
      array .push(arr[i]);
    }
  } 

6. 单层循环+includes

var array =[];
    for(var i = 0; i < arr.length; i++) {
            if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
                    array.push(arr[i]);
              }
    }
posted on 2022-02-19 11:55  社会优先于个人  阅读(31)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3