{ }的困惑

2016-10-20  本文已影响0人  假装会编程

被人问了一段代码的问题,一脸懵逼,为了分析清楚自己注释了一遍

Array.prototype.uniq = function(){
    var resArr = [];//返回的去处重复元素的数组
    var flag = true;//是否已插入过NaN元素

    for(var i=0;i<this.length;i++){//从头到尾遍历要处理的数组
        if(resArr.indexOf(this[i]) == -1){
        //如果要返回的数字中没有当前遍历的元素
            //indexOf方法无法识别数组的 NaN成员
            //所以对于NaN元素需要单独判断
            if(this[i] != this[i]){//如果当前元素是NaN元素
                if(flag){//且返回数组中还没有压入过NaN元素
                    resArr.push(this[i]);//插入NaN元素
                    flag = false;//标记置为已插入,即下次再遇到无需重复插入
                }
            }else{//其他情况表示所遭遇元素还没有插入过要返回的结果数组
                resArr.push(this[i]);//直接插入该元素即可
            }
        }
    }
    return resArr;//遍历结束,返回结果
}

然后某君曰:“{}!={}不是为true吗?那{}元素为什么可以插入很多次?

这里就不解释我坑爹的探索之旅了,总之:

上一篇 下一篇

猜你喜欢

热点阅读