码迷,mamicode.com
首页 > 编程语言 > 详细

js数组去重3种方法与性能对比

时间:2020-12-19 13:38:19      阅读:5      评论:0      收藏:0      [点我收藏+]

标签:date()   需要   js数组   UNC   ==   技术   运行   返回   数组   

第1种:

let arr = [2,3,2,5,3,2,2,1];
for (let i = 0; i < arr.length; ) {
    if (arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])) {
        arr.splice(i, 1);
    }else {
        i++;
    }
}
console.log(arr);  // [ 5, 3, 2, 1 ]

第2种:

let arr = [2,3,2,5,3,2,2,1];
for (let i = 0; i < arr.length; i++) {
    for (let j = i+1; j <arr.length; ) {
        if (arr[i] == arr[j]) {
            arr.splice(j, 1);
        }else {
            j++;
        }
    }
}
console.log(arr);  // [ 2, 3, 5, 1 ]

第3种:

let arr = [2,3,2,5,3,2,2,1];
arr = Array.from(new Set(arr));
console.log(arr);  // [ 2, 3, 5, 1 ]

这3种方法都能实现数组去重,接下来测试下他们的性能

// 测试执行耗时方法
function getRunTime(fun) {
    const start = new Date().getTime();//起始时间
    fun();//执行待测函数
    const end = new Date().getTime();//结束时间
    return (end - start) + "ms";//返回函数执行需要时间
}
let arr = [];
// 给数组添加20000个不同的值(为了测试性能)
for (let i = 0; i < 20000; i++) {
    arr.push(i);
}
// 第1种去重方法
function arrRun1(){
    for (let i = 0; i < arr.length; ) {
        if (arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])) {
            arr.splice(i, 1);
        }else {
            i++;
        }
    }
}
// 第2种去重方法
function arrRun2(){
    for (let i = 0; i < arr.length; i++) {
        for (let j = i+1; j <arr.length; ) {
            if (arr[i] == arr[j]) {
                arr.splice(j, 1);
            }else {
                j++;
            }
        }
    }
}
// 第3种去重方法
function arrRun3(){
    arr = Array.from(new Set(arr));
}
console.log(getRunTime(arrRun1)); // 多次运行,耗时在500ms - 530ms之间(设备cpu不同,会有差异)
console.log(getRunTime(arrRun2)); // 多次运行,耗时在200ms - 210ms之间(设备cpu不同,会有差异)
console.log(getRunTime(arrRun3)); // 多次运行,耗时稳定在2ms(设备cpu不同,会有差异)

技术图片

最终es6的Array.from(new Set(arr))完胜~

js数组去重3种方法与性能对比

标签:date()   需要   js数组   UNC   ==   技术   运行   返回   数组   

原文地址:https://www.cnblogs.com/hymenhan/p/14140005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!