美文网首页
{ }的困惑

{ }的困惑

作者: 假装会编程 | 来源:发表于2016-10-20 15:19 被阅读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吗?那{}元素为什么可以插入很多次?

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

  • indexOf方法无法识别NaN成员,所以要单独处理;
  • {}!={}是因为前后两个{}代表两个不同的空对象;
  • js中对象判断是通过比较引用所指向的内存地址是否一样来实现的;

相关文章

  • 摆脱困惑的困惑

    测量工具下那“真实的自我”,迈向“可能的自我”的探索过程: 我的目的不是要问答案,而是练习培养与别人探讨的感知习惯...

  • 最近的困惑,最近的困惑(இдஇ;)

    最近的困惑→離現在時間最近的 最近的困惑→離我最近的困惑→急需解決的困惑→重點 最需要解決的困惑:钱 我和金钱的关...

  • { }的困惑

    被人问了一段代码的问题,一脸懵逼,为了分析清楚自己注释了一遍 然后某君曰:“{}!={}不是为true吗?那{}元...

  • 做不到——不是困惑的困惑

    做不到——不是困惑的困惑 (释题:“做不到”是本能,不是困惑,所以姑且命题为“不是困惑的困惑”) “很多道...

  • “做不到”——不是困惑的困惑

    “做不到”——不是困惑的困惑 (六分之一:问题5讨论汇总) 第五周(4月30日—5月6日)李双双提出了一个...

  • 困惑

    最近为了学习的事情很上火,想学习,没时间或是不够用! 我是背奶妈妈,我是程序员,我想考个PMP,我想学新技术新框架...

  • 困惑

    “他们在家的每个月有1182元生活费,在养老院的吃、住全免,每月还有190元的零用钱”;“他们的伙食真的不錯,看到...

  • 困惑

    我是忘记了,怎么开始的,也忘记了怎么结束。突然我发现已经开始了许久,又突然戛然而止。一个个,一排排,满满的世故表…...

  • 困惑。

    每一个生活在大城市的异乡人们是否每天都在夜晚哭泣,在白天鼓起勇气,在这样的情况下开启每一天的旅程。

  • 困惑

    最后都不知道自己想怎样,只知道别人想让我怎样。

网友评论

      本文标题:{ }的困惑

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