JS简单数组去重
- Set
function unique(arr) {
return [...new Set(arr)] // 利用展开运算符,将Set转换成Array
return Array.from(new Set(arr)) // 利用Array.from(),将Set转换成Array
}
- 双层for+splice
function unique(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
j --
}
}
}
return arr
}
- indexOf+push到新数组
function unique(arr) {
let res = []
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) {
res.push(arr[i])
}
}
return res
}
- includes+push到新数组
function unique(arr) {
let res = []
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) {
res.push(arr[i])
}
}
return res
}
- filter
function unique(arr) {
// indexOf元素在数组中第一次出现的索引值
return arr.filter((item, index) => arr.indexOf(item, 0) === index)
}
原始数组 [1, 2, 4, 5, 4, 5]
index 0 1 2 3 4 5
伪新数组 [1, 2, 4, 5, 4, 5]
indexOf 0 1 2 3 2 3