不管是在工作中还是面试中,我们都会经常遇到数组去重问题,因此在这里介绍了几种js数组去重的方法。
1.利用Set去重
Set是ES6新特性,它类似于数组,没有重复值。
let array = [1,5,2,3,4,2,3,1,3,4];
function unique ( array ) {
let newArr = [ ];
let newArr = Array.from(new Set(array));
return newArr
}
let arr2 = unique (array); // [1,5,2,3,4]
2.利用双重循环
function unique(arr) {
let newArr = [arr[0]];
for (let i = 1; i < arr.length; i++) {
let repeat = false;
for (let j = 0; j < newArr.length; j++) {
if (arr[i] === newArr[j]) {
repeat = true;
break;
}
}
if (!repeat) {
newArr.push(arr[i]);
}
}
return newArr;
}
3.利用map去重
map也是ES6新的语法,采用的键值对的形式,只是其键不局限于普通对象的字符串。
let array = [1,5,2,3,4,2,3,1,3,4];
let newArr = [];
let map = new Map();
array.map ((b) => {
if (!map.has(b)) {
map.set(b,ture);
newArr.push(b);
}
})
console.log(newArr);
4.利用单层循环去重
let array = [1,5,2,3,4,2,3,1,3,4];
for(let i=0; i < array.length; i++ ){
if( array[i] == array[i+1]){
array.splice(i, 1);
i--;
}
}
console.log(array );
5.利用indexOf去重
indexOf返回某个指定的元素在数组中首次出现的位置。从前向后搜索。
let array = [1,5,2,3,4,2,3,1,3,4];
let newArr = [];
array.map((b) => {
if(newArr.indexOf(b) === -1){
newArr.push(b);
}
})
console.log(newArr);
6.利用includes去重
includes 判断数组是否包含某个值。包含返回 true,否则false。
参数:searchElement:要查找的元素;fromIndex:开始查找的索引位置。
let array = [1,5,2,3,4,2,3,1,3,4];
let newArr = [];
array.map((b) => {
if(!newArr.includes(b)){
newArr.push(b);
}
})
console.log(newArr);