首页 > 解决方案 > 删除数组中的重复项

问题描述

删除数组中的重复项

  1. 其中一个函数使用了 JS ES6 的 native 方法
  2. 有没有更好的方法(兼容性和性能)?

注意:过滤数组中未定义的元素

英语很弱,可能被描述为不准确。>﹏<</p>

谢谢

function delRepeatArray1(arr) {
    console.time();
    var result = Array.from(new Set(arr));
    console.timeEnd();

    return result;
}

function delRepeatArray2(arr) {
    console.time();
    var result = arr.filter(function (em, index, arr) {
        return arr.indexOf(em) === index;
    });
    console.timeEnd();

    return result;
}

var arr = ["undefined", "200", 0, -0, 200, undefined, undefined, null, true, null, "true", false, 0, true, 200, false],
    result1 = delRepeatArray1(arr),
    result2 = delRepeatArray2(arr);

console.log(result1);
console.log(result2);

标签: javascriptarraysperformanceoptimizationbenchmarking

解决方案


这是从提供的数组中获取唯一值的快速片段:

var arr = ["undefined", "200", 0, -0, 200, undefined, undefined, null, true, null, "true", false, 0, true, 200, false];
var uniqueNames = [];
$.each(arr, function(i, el){
    if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
console.log(uniqueNames);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


推荐阅读