javascript - js数组去重复方法,求解
大家讲道理
大家讲道理 2017-04-10 16:35:29
[JavaScript讨论组]

这是一个通过对象的键值对来取这个数组重复元素的方法,下边注释部分不理解,求帮忙解答下

function unique2(array){
  var n = {}, r = [], len = array.length, val, type;
    for (var i = 0; i < array.length; i++) {
        val = array[i];
        type = typeof val;  //这里不是判断val类型吗?取到的值不都应该是number这种吗
        if (!n[val]) {
            n[val] = [type];  //这里为什么要将数据类型number这种赋给n[val]呢,那对象n内不就都是一些,number,string这种东西了吗?
            r.push(val);
        } else if (n[val].indexOf(type) < 0) {
            n[val].push(type);
            r.push(val);
        }
    }
    return r;
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
高洛峰

因为 JS 的键是不分类型的,例如下面这段代码:

n = {};
n[1] = 1;
n["1"] = 1;

执行后 n 只有一个元素,如果要区分数字和字符串,就要保存类型。

例如当 array = [1, "1"],问题中的代码执行后 n = {1: ["number", "string"]}

当遍历到一个新值 val,问题中的代码会检查 val 是否在 n 的键中,然后检查 val 的类型是否在 val 键对应的值中,两种皆否则认定这是一个非重复的值。

天蓬老师
console.log(new Set(['a','b','c','a']));

Set会给array去重

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号