【悲战蓝桥杯国赛】Javascript数组去重大全

以下是几种常见的 JavaScript 数组去重方法,每种方法都附有注释:

  1. 使用 Set:
// 方法1:使用 Set
const uniqueArrayUsingSet = (arr) => {
    return [...new Set(arr)];
};

let arr = [1, 2, 3, 2, 4, 3];
console.log(uniqueArrayUsingSet(arr)); // [1, 2, 3, 4]
  1. 使用 filter 和 indexOf:
// 方法2:使用 filter 和 indexOf
const uniqueArrayUsingFilter = (arr) => {
    return arr.filter((item, index) => {
        return arr.indexOf(item) === index;
    });
};

console.log(uniqueArrayUsingFilter(arr)); // [1, 2, 3, 4]
  1. 使用 reduce 和 includes:
// 方法3:使用 reduce 和 includes
const uniqueArrayUsingReduce = (arr) => {
    return arr.reduce((unique, item) => {
        return unique.includes(item) ? unique : [...unique, item];
    }, []);
};

console.log(uniqueArrayUsingReduce(arr)); // [1, 2, 3, 4]
  1. 使用 for 循环:
// 方法4:使用 for 循环
const uniqueArrayUsingForLoop = (arr) => {
    let unique = [];
    for (let i = 0; i < arr.length; i++) {
        if (unique.indexOf(arr[i]) === -1) {
            unique.push(arr[i]);
        }
    }
    return unique;
};

console.log(uniqueArrayUsingForLoop(arr)); // [1, 2, 3, 4]
  1. 使用 Map:
// 方法5:使用 Map
const uniqueArrayUsingMap = (arr) => {
    let map = new Map();
    arr.forEach(item => {
        if (!map.has(item)) {
            map.set(item, true);
        }
    });
    return [...map.keys()];
};

console.log(uniqueArrayUsingMap(arr)); // [1, 2, 3, 4]
  1. 使用 sort 和 filter:
// 方法6:使用 sort 和 filter
const uniqueArrayUsingSort = (arr) => {
    arr.sort();
    return arr.filter((item, index) => {
        return item !== arr[index - 1];
    });
};

console.log(uniqueArrayUsingSort(arr)); // [1, 2, 3, 4]

除了前面提到的方法,这里还有几种其他的 JavaScript 数组去重的方法:

  1. 使用 Object 键值对:
// 方法7:使用 Object 键值对
const uniqueArrayUsingObject = (arr) => {
    let unique = {};
    arr.forEach(item => {
        unique[item] = true;
    });
    return Object.keys(unique).map(Number);
};

console.log(uniqueArrayUsingObject([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
  1. 使用 ES6 Map 配合 forEach:
// 方法8:使用 ES6 Map 配合 forEach
const uniqueArrayUsingES6Map = (arr) => {
    let map = new Map();
    arr.forEach(item => {
        if (!map.has(item)) {
            map.set(item, true);
        }
    });
    return Array.from(map.keys());
};

console.log(uniqueArrayUsingES6Map([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
  1. 使用 includes 和 forEach:
// 方法9:使用 includes 和 forEach
const uniqueArrayUsingIncludes = (arr) => {
    let unique = [];
    arr.forEach(item => {
        if (!unique.includes(item)) {
            unique.push(item);
        }
    });
    return unique;
};

console.log(uniqueArrayUsingIncludes([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
  1. 使用 for…of 和 Set:
// 方法10:使用 for...of 和 Set
const uniqueArrayUsingForOfAndSet = (arr) => {
    let unique = new Set();
    for (let item of arr) {
        unique.add(item);
    }
    return Array.from(unique);
};

console.log(uniqueArrayUsingForOfAndSet([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
  1. 使用 lodash 库的 uniq 方法:
// 方法11:使用 lodash 库的 uniq 方法
const _ = require('lodash');
const uniqueArrayUsingLodash = (arr) => {
    return _.uniq(arr);
};

console.log(uniqueArrayUsingLodash([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]

12将数组的每一个元素依次与其他元素做比较,发现重复元素,删除

1.将数组的每一个元素依次与其他元素做比较,发现重复元素,删除
var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5];
    console.log(arr);    //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5]
    function noRepeat1(arr) {
        for(var i = 0; i < arr.length-1; i++){
            for(var j = i+1; j < arr.length; j++){
                if(arr[i]===arr[j]){
                    arr.splice(j,1);
                    j--;
                }
            }
        }
        return arr;
    }
    var arr2 = noRepeat1(arr);
    console.log(arr2);    //[1, 23, 3, 5, 6, 7, 9, 8]
© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 抢沙发

    暂无评论内容