2024年11月27日 建站教程
今天web建站小编给大家介绍几种数组去重的方法,其中有es6语法写的,也有低版本浏览器兼容需要的写。
1、es6写法:利用Set去重(写法最简单,但不兼容低版本)
const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5]; const setData = Array.from(new Set(arr)); console.log(setData); //[1, 'ok', 'mi', 3, 5]
2、es6写法:利用includes去重
const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => {
let repeatArr = [];
for (let i = 0,len = arr.length ; i < len; i++)
if (!repeatArr.includes(arr[i])) repeatArr.push(arr[i])
return repeatArr;
}
console.log(removeRepeatData(arr))
// [1, 'ok', 'mi', 3, 5]
3、es6写法:利用filter去重,(需要和indexOf一起用)
const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5]; const removeRepeatData = (arr) => arr.filter((item,index) => arr.indexOf(item,0) === index); console.log(removeRepeatData(arr)) // [1, 'ok', 'mi', 3, 5]
4、双重for循环去重(兼容低版本)
const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => {
for (let i=0,len = arr.length; i < len; i++) {
for (let j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
len--;
}
}
}
return arr;
};
console.log(removeRepeatData(arr))
// [1, 'ok', 'mi', 3, 5]
5、indexOf去重(兼容低版本最合适,比双重for循环简单)
const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => {
let repeatArr = [];
for (let i = 0,len = arr.length ; i < len; i++)
if (repeatArr.indexOf(arr[i]) === -1) repeatArr.push(arr[i])
return repeatArr;
}
console.log(removeRepeatData(arr))
//[1, 'ok', 'mi', 3, 5]
本文链接:http://so.lmcjl.com/news/18576/