使用underscore.js中的_.uniq()方法

ES6中的Set

1
2
let arr = [1, 3, 3, 4, 9 ,5, 5, 7, 0, 5]
let result = Array.from(new Set(arr))
1
2
let arr = [1, 3, 3, 4, 9 ,5, 5, 7, 0, 5]
let result = [...new Set(arr)]

循环遍历

1
2
3
4
5
6
let result = []
arr.forEach(item => {
if (result.indexOf(item) === -1) {
result.push(item)
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 双重for循环
let len = arr.length
let flag;
let result = []
for (let i = 0; i < len; i++) {
flag = false
for(let j=i+1; j < len; j++) {
if (arr[i] === arr[j]) {
flag = true
}
}
if (!flag) {
result.push(arr[i])
}
}

ES6的filter函数

1
2
3
let result = arr.filter((item, index) => {
return arr.indexOf(item) === index
})

reduce函数

1
2
3
let result = arr.reduce((pre, item) => {
return pre.includes(item) ? pre : [...pre, item]
}, [])

转化为对象的键

1
2
3
4
5
let result = {}
arr.forEach((item, index) => {
return result[item] = index
})
result = Object.keys(result).map(item => ~~item)

排序方式

一旦使用排序,面试官大几率会问你排序算法

1
2
3
4
5
6
7
8
9
// 一旦使用排序,面试官大几率会问你排序算法
let result = []
let temp = arr.sort()
let len = temp.length
for (let i=0; i<len; i++) {
if (arr[i] !== arr[i+1]) {
result.push(arr[i])
}
}