JavaScript数组去重
JavaScript去重的七种方法 简单易懂
方法一:暴力去重法
// 暴力去重法
function ArrayIsUnique (array) {
if (!Array.isArray(array)) return;
for (let i = 0; i < array.length; i++) {
if (array[i] === array[i + 1]) {
array.splice(i, 1);
i--;
}
}
return array
}
方法二:Set方法
// Set方法去重
function ArrayIsUnique2 (array) {
if (!Array.isArray(array)) return;
const map = new Set(array)
return Array.from(map)
}
方法三:Map方法
// Map方法去重
function ArrayIsUnique3 (array) {
if (!Array.isArray(array)) return;
const map = new Map()
array.forEach(item => map.set(item, item))
return Array.from(map.values())
}
方法四:先排序再去重
// 先排序再去重
function ArrayIsUnique4 (array) {
if (!Array.isArray(array)) return;
array.sort()
for (let i = 0; i < array.length; i++) {
if (array[i] === array[i + 1]) {
array.splice(i, 1)
}
}
return array
}
方法五:indexof方法去重
// 定义一个新数组 如果没有就存进去
function ArrayIsUnique5 (array) {
if (!Array.isArray(array)) return;
const arr = []
array.forEach(item => {
if (arr.indexOf(item) === -1) {
arr.push(item)
}
})
return arr
}
方法六:使用includes方法
function ArrayIsUnique6 (array) {
if (!Array.isArray(array)) return;
const arr = []
array.forEach(item => {
if (!arr.includes(item)) {
arr.push(item)
}
})
return arr
}
方法七:filter方法
function ArrayIsUnique7 (array) {
if (!Array.isArray(array)) return;
let arr = array.map(item => item)
array.forEach(item => {
arr = arr.filter(i => item !== i)
arr.push(item)
})
return arr
}
效率最高的数组去重方法是使用 Map 或 Set 数据结构来进行去重,使用 Set 或 Map 的好处在于它们内部使用了哈希表来存储数据,因此可以快速判断一个元素是否已经存在于集合中,同时还能够保证集合中的元素是唯一的,从而实现快速的数组去重。同时, Set 和 Map 在处理大规模数据时的效率远远高于使用 indexOf、includes、splice 等方法进行去重。
如有错误 可指出修改 谢谢