数组去重的几种方法
示例数组
var arr = [1, 1, true, true, 'true', null, 'null', NaN, 'NaN', undefined,
{
test: 1
}, {
test: 1
}, {
test: 2
},
[1, 2, 3],
[1, 2, 3]
];
1. [...new Set(Array)] && JSON.Stringify()
这个去重方法,可以对于数组中的基本数据类型进行去重,无法去重引用类型
let result = [...new Set(arr)]
let arrDeWeight = JSON.Stringify(result)
console.log(arrDeWeight)'
//打印结果
[1,true,"true",null,"null",null,"NaN",null,{"test":1},{"test":1},{"test":2}]
2. splice && for循环
这个去重方法,可以对于数组中的基本数据类型进行去重,无法去重引用类型
function arrDe(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--
}
}
}
console.log('arr:', arr)
return arr
}
arrDe(arr)
3. indexOf && for循环
这个去重方法,可以对于数组中的基本数据类型进行去重,无法去重引用类型
function arrDe(arr){
if(!Array.isArray(arr)){
console.error('not a Array');
return
}
let resulet = [];
for(let i = 0; i < arr.length; i++){
if(result.indexOf(arr[i]) == -1){
result.push(arr[i])
}
}
console.log('result:',result)
return result
}
arrDe(arr)
3. includes && for循环
这个去重方法,可以对于数组中的基本数据类型进行去重,无法去重引用类型
function arrDe(arr){
if(!Array.isArray(arr)){
console.error('not a Array')
}
let result = [];
for(let i = 0;i<arr.length;i++){
if(!result.includes(arr[i])){
result.push(arr[i])
}
}
console.log(result)
return result
}
arrDe(arr)
4. fifter() && indexOf()
这个去重方法,可以对于数组中的基本数据类型进行去重,无法去重引用类型
function arrDe(arr){
return arr.fifter(function(item,index){
return arr.indexOf(item) == index
})
}
console.log(arrDe(arr))
5. hasOwnProperty() && fifter() && JSON.stringify()
这个去重方法,可以对于数组中的基本数据类型进行去重,可以去重引用类型
function arrDe(arr){
let obj = {};
return arr.fifter(function(item,index){
retrun obj.hasOwnProperty(typeof item + JSON.stringify(item) ? false : (obj[typeof(item + JSON.stringify(item))]=true))
})
}
console.log(arrDe(arr))
5. Map() && JSON.stringify()
这个去重方法,可以对于数组中的基本数据类型进行去重,可以去重引用类型
function arrDe(arr) {
let map = new Map()
let result = [];
for (let i = 0; i < arr.length; i++) {
let item = arr[i]
if (!map.has(typeof item + JSON.stringify(item))) {
result.push(item)
map.set(typeof item + JSON.stringify(item), true)
}
}
return result
}
console.log('arrDe(arr):', arrDe(arr))