美文网首页
JavaScript 数组去重

JavaScript 数组去重

作者: xyfun | 来源:发表于2016-09-15 18:26 被阅读0次

    来自百度前端学院IFE

    要求:对数组进行去重操作,只考虑数组中元素为数字或字符串,返回一个去重后的数组

    function uniqArray(arr) { 
        // your implement
    }
    // 使用示例
    var a = [1, 3, 5, 7, 5, 3];
    var b = uniqArray(a);
    console.log(b); // [1, 3, 5, 7]
    

    代码如下:

    function uniqArray(arr){
        var result=[];
        var isRepeat;
        for (var i = 0; i < arr.length; i++) {
            isRepeat=false;
            for (var j = 0; j < result.length; j++) {
                if (arr[i]==result[j]) {
                    isRepeat=true;
                    break;
                }
            }
            if (!isRepeat) {
                result.push(arr[i]);
            }
        }
        return result;
    }
    

    总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可以看出,这种方法效率极低。我们可以 用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的,改进如下:

    function uniqArray(arr){
        var result=[];
        var obj={};
        for (var i = 0; i < arr.length; i++) {
            if(!obj[arr[i]]){
                result.push(arr[i]);
                obj[arr[i]]=true;
            }
        }
        return result;
    }
    

    相关文章

      网友评论

          本文标题:JavaScript 数组去重

          本文链接:https://www.haomeiwen.com/subject/drpbettx.html