问答

JS hasOwnProperty()方法实现数组去重的问题

作者:admin 2021-04-20 我要评论

为什么要写typeof item + item 呢 function unique(arr) { var obj = {}; return arr.filter(function (item, index, arr) { console.log(obj.hasOwnProperty(ty...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

为什么要写typeof item + item 呢

        function unique(arr) {
            var obj = {};
            return arr.filter(function (item, index, arr) {
                console.log(obj.hasOwnProperty(typeof item + item)) // 这一行代码是我自己添上去的
                //为什么要写typeof item + item 呢
                return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
            })
        }
        var arr = [1, 1, 'true', 'true', true, true, 15, 15, false, false, undefined, undefined, null, null, NaN, NaN, 'NaN', 0, 0, 'a', 'a', {}, {}];
        console.log(unique(arr))
        //[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}]   //所有的都去重了
###

因为object的key是string类型的,无论你传入什么,他都会解析成字符串(symbol和Map等新特性除外),所以这就导致了数字1和字符串1,他在object中的key是相同的,而你应该不想把他们当成相同的数据给去除掉。所以这里使用了typeof来简单判断了下类型。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器