数组去重问题

Posted ysdemo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组去重问题相关的知识,希望对你有一定的参考价值。

 

今天在看数组去重的题 遇到了这个比较有意思的代码

   代码如下

function uniq(array){
    var temp = {}, r = [], len = array.length, val, type;
    for (var i = 0; i < len; i++) {
        val = array[i];
        type = typeof val;
        console.log(‘temp[val]=‘+temp[val]);
        console.log(‘temp=‘+temp);
        if (!temp[val]) {
            temp[val] = [type];
            console.log(temp[val]);
            r.push(val);
        } else if (temp[val].indexOf(type) < 0) {
          console.log(temp[val]);
            temp[val].push(type);
            r.push(val);
        }
    }
    return r;
}

var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aa));

在这串代码里有一点比较有意思

temp这个对象 存的是aa 数组里的每一个元素的元素类型 
他是以键值对的方式存储的
这里有个temp[2]和temp[‘2‘] 他俩指向的是同一个位置
我输出了一下
技术分享图片

他俩指的是同一个位置

技术分享图片

也就是说 哈希数组的键值队 的键默认是带双引号的 也可以省略不带引号;

 

 





以上是关于数组去重问题的主要内容,如果未能解决你的问题,请参考以下文章

数组去重

怎么对数组中的对象去重

数组去重方法总结

C/C++系列数组去重代码实现

C/C++系列数组去重代码实现

C/C++系列数组去重代码实现