双重for循环依次比较
将结果函数中的元素与原数组中的元素依次比较,重复的元素舍弃,不重复的元素添加仅结果函数。
function removeRepeatArr(arr) {
const result = [];
for (let i = 0, len = arr.length; i < len; i++) {
let isRepeat = false;
for (let j = 0, _len = result.length; j < _len; j++) {
if (result[j] === arr[i]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
result.push(arr[i]);
}
}
return result;
}
const arr = [1, 2, 1, 2, 3, 3, 4, 5];
console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5 ]
使用hashtable
使用for循环创建hash表
function removeRepeatArr(arr) {
const result = [];
const hash = {};
for (let i = 0, len = arr.length; i < len; i++) {
if (!hash[arr[i]]) {
hash[arr[i]] = true;
result.push(arr[i]);
}
}
return result;
}
const arr = [1, 2, 1, 2, 3, 3, 4, 5];
console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5 ]
当然也可以用forEach代替for循环
function removeRepeatArr(arr) {
const result = [];
const hash = {};
arr.forEach((item) => {
if (!hash[item]) {
result.push(item);
hash[item] = true;
}
});
return result;
}
const arr = [1, 2, 1, 2, 3, 3, 4, 5];
console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5 ]
使用set去重
function removeRepeatArr(arr) {
return Array.from(new Set(arr));
}
const arr = [1, 2, 1, 2, 3, 3, 4, 5];
console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5 ]