<script type="text/javascript">
var uniq = function (arr) {    
var a = [],        
    o = {},        
    i,        
    v,        
    len = arr.length;    
    if (len < 2) {        
        return arr;    
    }    
    for (i = 0; i < len; i++) {        
        v = arr[i];        
        if (o[v] !== 1) {            
            a.push(v);            
            o[v] = 1;       
        }    
    }    
    return a;
}
var arr = [9,1,'3',8,7,7,6,6,5,7,8,8,7,4,3,1]; 
alert(uniq(arr));</script>
请问 if (o[v] !== 1) {            
            a.push(v);            
            o[v] = 1;       
        } 
中的o[v] !== 1和o[v] = 1是什么意思?我在网上查了查也没有明白

解决方案 »

  1.   


    这个不是我上午给的函数么?
    o[v] = 1 就是给hash对应的键值 加上一个标识.
    每次循环都判断o[v] !== 1 如果已经存在标识了 就表示存在 就给剔除了.
      

  2.   

    !==和!=的区别是!==不会进行类型转换,而!=会。
    所以
    null != 0是false
    null !== 0是true
    对于和1比较的对象而言,!==和!=其实就没有差别了
    对于JavaScript属性有两种表示方法
    o.a === o["a"],换个熟悉点的就是window.document === window["document"]
    只是从基本语言的角度说了一下