双重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   ]

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-09
  • 2022-03-07
  • 2021-11-28
  • 2021-10-05
  • 2022-12-23
猜你喜欢
  • 2022-01-08
  • 2021-08-14
  • 2021-07-24
  • 2021-05-24
  • 2022-12-23
  • 2023-02-10
  • 2022-12-23
相关资源
相似解决方案