数组去重问题

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

   代码如下

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'] 他俩指向的是同一个位置
我输出了一下

他俩指的是同一个位置

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

 

猜你喜欢

转载自www.cnblogs.com/ysdemo/p/9780986.html