原始数组
let arr = [1, 2, 5, 4, 5, 3, 2, 4, 1]
方法1: 利用数组 includes 过滤
let result = [];
arr.forEach(item => {
if (!result.includes(item)) {
result.push(item)
}
})
console.log(result)
方法2:利用 Set 的唯一性
const result = Array.from(new Set(arr));
console.log(result)
方法3: 利用 map 这种数据结构
const result = [];
const map = new Map();
for (let v of arr) {
if (!map.has(v)) {
map.set(v, true);
result.push(v);
}
}
console.log(result);
方法4: 两两比较
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);
j--;
}
}
}
console.log(arr)
方法5: 利用对象过滤
let result = [];
let obj = {};
arr.forEach(item => {
if (!obj.hasOwnProperty(typeof item + item)) {
// obj的健必须是字符串,所以把类型加上,区分是数据类型
obj[typeof item + item] = true;
result.push(item)
}
})
console.log(result)
方法6: 利用 filter 过滤,indexOf 查找数组下标
function filterArr(arr) {
return arr.filter(function (item, index) {
return arr.indexOf(item) === index
})
}
console.log(filterArr(arr))