- 雙層迴圈判斷原陣列前後item是否重複
function unique (arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
}
}
}
return arr
}
- ES6 set
function unique (arr) {
return Array.from(new Set(arr))
}
- indexOf 判斷返回新陣列
function unique (arr) {
let newArr = []
arr.forEach(item => {
if (newArr.indexOf(item) < 0) {
newArr.push(item)
}
})
return newArr
}
- filter + indexOf
function unique (arr) {
return arr.filter((item, index, arr) => {
// console.log(arr)
// Array.filter() 的第三個入參,表示原陣列
return arr.indexOf(item, 0) === index
// Array.indexOf() 的第二個入參,表示從哪個位置開始,此處沒用到這個第二個引數,只是突然想起來了備註下
})
}