前言
这篇文章介绍了Js五种常用的数组去重方法、具有一定的参考价值、需要的小伙伴可以参考一下。
一、利用ES6中的Set去重
Set是ES6新增的数据结构、是去重方法中最简便、快捷的方法
var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) { // 封装方法,传入去重对象
return ([...new Set(arr)]) // 利用 new Set方法,返回去重后的新数组,不改变原有数组,
}
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']
二、ES6 Array.from()方法
var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) { // 封装方法,传入去重对象
return (Array.from(new Set(arr))]) // 利用 new Set方法,返回去重后的新数组,不改变原有数组,
}
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']
三、利用双重for循环+splice去重
var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(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--
}
};
}
return arr
}
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']
四、利用filter + indexOf查找元素去重
var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) {
return arr.filter((item, index) => { // filter方法过滤、如果返回值为true、则该元素被保留、否则删除
return arr.indexOf(item) === index // indexOf方法返回元素在数组中的位置、如果不存在就会返回-1
})
}
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']
五、includes方法去重
查询数组是否包含该元素、如果不包含就push进去
var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
};
return newArr
}
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']
结尾
关于Js数组去重当然还有许多更好的方法、该文章只总结了五种常用的去重方法、对大家会有一定的帮助。