「已注销」 2019-09-15 21:55 采纳率: 0%
浏览 189

有点不太明白这个自定义数组去除方法中的最后一段代码的实现原理,麻烦哪位同学可以指点一二?

 实例:为Array对象添加一个去除重复项的方法

    input
    [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq()
    output
    [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']

这里要注意,NaN === NaN 为false,{} === {}为false。

Array.prototype.uniq = function () {
    if (!this.length || this.length == 0) return this;
    var res = [], key, hasNaN = false, temp = {};
    for (var i = 0 ; i < this.length; i++) {
        if (typeof this[i] === 'object') {
            res.push(this[i]);
        } else if (this[i] != this[i]) { // 如果当前遍历元素是NaN
            if (!hasNaN) {
                res.push(this[i]);
                hasNaN = true;
            }
_##         } **else {
##             key = typeof(this[i]) + this[i];
##             if (!temp[key]) {
##                 res.push(this[i]);
##                 temp[key] = true;
##             }
##         }**_
    }
    return res;
}

就是上面else里的代码块,我不是很理解。谢谢大家!

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-09-15 22:33
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab