方法 1: 使用Set去重
function uniqueSet(arr) {
return [...new Set(arr)];
}
// 测试数组
const testArr = [1,2,2,3,4,4];
// 调用
const resultSet = uniqueSet(testArr);
// 输出
console.log('1. Set方法结果:', resultSet);
// 结果
// [1, 2, 3, 4]
方法 2: 使用filter和indexOf去重
function uniqueFilter(arr) {
return arr.filter((item, index) => arr.indexOf(item) === index);
}
// 测试数组
const testArr2 = ['a', 'b', 'b', 'c', 'a'];
// 调用
const resultFilter = uniqueFilter(testArr2);
// 输出
console.log('2. Filter方法结果:', resultFilter);
// 结果
// ['a', 'b', 'c']
方法3: 使用includes判断重复
function uniqueReduce(arr) {
return arr.reduce((acc, current) => {
if (!acc.includes(current)) {
acc.push(current);
}
return acc;
}, []);
}
// 测试数组
const testArr3 = [1, 1, 2, 3, 3, 4, 5];
// 调用
const resultReduce = uniqueReduce(testArr3);
// 输出
console.log('3. Reduce方法结果:', resultReduce);
// 结果
// [1, 2, 3, 4, 5]
方法4: 使用for循环去重
function uniqueForLoop(arr) {
const result = [];
for (let i = 0; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
// 测试数组
const testArr4 = ['apple', 'banana', 'apple', 'orange'];
// 调用
const resultForLoop = uniqueForLoop(testArr4);
console.log('4. For循环方法结果:', resultForLoop);
// 结果
// ['apple', 'banana', 'orange']
方法5: 使用Map去重
function uniqueMap(arr) {
const map = new Map();
const result = [];
for (const item of arr) {
if (!map.has(item)) {
map.set(item, true);
result.push(item);
}
}
return result;
}
// 测试数组
const testArr5 = [10, 20, 20, 30, 40, 40, 50];
// 调用
const resultMap = uniqueMap(testArr5);
// 输出
console.log('5. Map方法结果:', resultMap);
// 结果
// [10, 20, 30, 40, 50]方法6: 使用Object键值去重
function uniqueObject(arr) {
const obj = {};
const result = [];
for (const item of arr) {
if (!obj[item]) {
obj[item] = true;
result.push(item);
}
}
return result;
}
// 测试数组
const testArr6 = ['x', 'y', 'z', 'x', 'y'];
// 调用
const resultObject = uniqueObject(testArr6);
// 输出
console.log('6. Object方法结果:', resultObject);
// 结果
// ['x', 'y', 'z']