1. 使用 Set
const array = [1, 2, 3, 3, 4, 5, 5]
const uniqueArray = [...new Set(array)] // new Set 后是 set 格式,使用 ...扩展符,转为数组形式
console.log('uniqueArray', uniqueArray)
// 注意:如果数组中含有空元素,如:[1, 2, , 3],则空元素会被转为 undefined, 即 [1,2,undefined,3]
2. 使用 filter 和 indexOf
const array = [1, 2, 3, 3, 4, 5, 5, null, null, undefined, 'wew', 'we']
const uniqueArray = array.filter((value, index, self) => {
return self.indexOf(value) === index;
});
console.log(uniqueArray);
3. 使用 reduce
数组的 reduce() 方法是 js 中的一个高阶函数,用于对数组中的每个元素进行累积操作,并最终返回一个结果。
reduce() 方法接受两个参数:回调函数和初始值。回调函数可以接受四个参数:累加器、当前值、当前索引和原始数组。
回调函数在数组的每个元素上执行,并将累加器和当前值作为参数传递进去。它可以执行任何操作,并返回一个新的累加器值。在等次迭代过程中,累加器的值会被更新。
array.reduce(callback, initialValue);
const array = [1, 2, 3, 3, 4, 5, 5, null, null, undefined, 'wew', 'we']
const uniqueArray = array.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue)
}
return accumulator
}, [])
console.log(uniqueArray);
4. 使用 for 循环和 includes
const array = [1, 2, 3, 3, 4, 5, 5, null, null, undefined, 'wew', 'we']
const uniqueArray = []
for(let i = 0; i < array.length; i++) {
if(!uniqueArray.includes(array[i])) {
uniqueArray.push(array[i])
}
}
console.log('--uniqueArray--', uniqueArray);
5. 借用临时对象的方式
function unique(arr) {
let newArr = []
let temp = {}
let item;
for(let i = 0, len = arr.length; i < len; i++) {
item = arr[i];
if(!temp[item]) {
temp[item] = true;
newArr.push(item);
}
return newArr;
}
}