方法1:使用Set
const arr = [1, 1, '1', true, true, false, false, {}, {}]
const res = Array.from(new Set(arr))
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]
方法2:两层for
循环 + splice
const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
let len = arr.length
for (let j = i + 1; j < len; j++) {
arr.splice(j, 1)
len--
j--
}
return arr
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]
方法3:使用 indexOf
const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
const res = []
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) {
res.push(arr[i])
}
}
return res
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]
方法4:使用 includes
const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
const res = []
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) {
res.push(arr[i])
}
}
return res
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]
方法5:使用 filter
const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => arr.filter((item, index) => arr.indexOf(item) === index)
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]
方法6:使用 Map
const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
const map = new Map()
const res = []
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], true)
res.push(arr[i])
}
}
return res
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]