- Array.filter() + indexOf
function distinct(arr) {
return arr.filter((item, index)=> {
return arr.indexOf(item) === index
})
}
- 双重 for 循环
function distinct(arr) {
let len = arr.length
for (let i = 0; i < len; i++) {
for (let j=i+1; j<len; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
len--;
j--;
}
}
}
return arr
}
- for…of + includes()
function distinct(arr) {
let result = []
for (let i of arr) {
!result.includes(i) && result.push(i)
}
return result
}
- Array.sort() + for
function distinct(arr) {
arr = arr.sort()
let result = [arr[0]]
for (let i=1, len=arr.length; i<len; i++) {
arr[i] !== arr[i-1] && result.push(arr[i])
}
return result
}
- new Set()
function distinct(arr) {
return Array.from(new Set(arr))
return [...new Set(arr)]
}
- for…of + Object
function distinct(arr) {
let result = []
let obj = {}
for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
}