您的位置:首页 > Web前端 > JavaScript

浅谈js中,关于数组去重的几种方法

2020-04-07 12:35 1391 查看

js中数组的去重方法

在程序的编写过程中,我们经常会遇到将数组去重的问题,下面我们简单来探讨一下。

咱们假设一个数组出来

  1. 双重for循环来去重
循环遍历数组中的每一个单元,跟其之后的单元进行比较,如果相同,就删除之后的单元
var arr=[1,1,1,2,3,3,4,2,5,5,7,8];
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length-1;j++){
if(arr.[i]===arr.[j]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr)//[1, 2, 3, 4, 5, 7, 8]

2.利用数组的排序方法再进行循环删除

var arr=[1,1,1,2,3,3,4,2,5,5,7,8];
arr.sort((a,b)=>{return a-b});
console.log(arr);//[1, 1, 1, 2, 2, 3, 3, 4, 5, 5, 7, 8]
for (let i = 0; i <= arr.length - 1 - 1; i++) {
if (arr[i] === arr[i + 1]) {
arr.splice(i + 1, 1);
i--;
}
}
console.log(arr);//[1, 2, 3, 4, 5, 7, 8]

3.利用对象中不能储存相同的键名这一特点来去重

var arr=[1,1,1,2,3,3,4,2,5,5,7,8];
const obj = {};

arr.forEach(function (val, key) {
obj[val] = 'haha';
});
const newArr = [];
for (let key in obj) {
newArr.push(key);
}
console.log(obj);//{1: "haha", 2: "haha", 3: "haha", 4: "haha", 5: "haha", 7: "haha", 8: "haha"}
console.log(newArr);//["1", "2", "3", "4", "5", "7", "8"]

4.利用indexof方法来判断要写入的数值是否已存在新数组中

var arr=[1,1,1,2,3,3,4,2,5,5,7,8];
const newArr = [];
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1) {//-1,说明不存在
newArr.push(arr[i]);
}
}
console.log(newArr);//[1, 2, 3, 4, 5, 7, 8]

5.将数组单元赋值给set数据类型
set数据类型中不会储存相同的数据,自动去重

var arr=[1,1,1,2,3,3,4,2,5,5,7,8];

const newArr = [...new Set(arr)];

console.log(newArr);//[1, 2, 3, 4, 5, 7, 8]

以上,就是数组去重的部分方法,欢迎大家交流讨论。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
benpaodeazi 发布了2 篇原创文章 · 获赞 1 · 访问量 47 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: