JS——数组去重

视频:https://ke.qq.com/course/231577?taid=3983676656552089

练习29:数组去重

其实你不用第一个和后面的比,第二个和后面的比,也不用两层for循环。

你写一个对象,把数组的每一位当成对象的属性名(一个对象不可能有两个同名的属性),属性值你随意写,写完之后,你只需要把对象的属性名取出来,就可以实现数组去重了。如下:

var arr = [1,1,1,1,2,2,2,3,1,2,1,1,1,1];
            var obj = {
                "1" : "abc",
                "2" : "abc",
                "3" : "abc"
            }//哈希
            Array.prototype.unique = function () {
                
            }

实现:

var arr = [1,1,1,1,2,2,2,3,3,2,2,0,0];
            Array.prototype.unique = function () {
                var temp = {};//为了比对,先写一个对象
                var arr = [];//去重完的数组放到一个新数组中,待会返回
                var len = this.length;
                for(var i = 0;i < len;i ++){
                    if (!temp[this[i]]) {
                        temp[this[i]] = "abc";
                        arr.push(this[i]);
                    }
                }
                return arr;
            }

详细执行过程:

首先数组去重的原理你要清楚,把数组的每一位取出来放到对象里面,当成对象的属性名,然后挨个访问对象里面的属性名,看看有没有属性值,

去重前的准备工作,For循环,循环的是这个目标数组的长度,目的是把目标数组的每一位拿出来,看看是不是重复的,然后循环的每一圈都判断数组的当前位的值,放到我们的对象(temp)里面,咱先拿出对象的当前数组位,如:i=0;this[0]=1;看看temp[1]有没有值,没值取出来的就是undefined,取出来的undefined再加一个“!”,接着走if,temp[1]=”abc”;然后就把1push到了数组arr里面了,返回的去重的数组里面就有一个1了,一次执行…

注意:不是说对象里面属性的属性值可以随便取吗,我写的高大上一点,我写this[i],如果你这样写就不一定行了,比如数组里面如果有0的话,你是不能够去重的。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H_Cisco

感谢大佬打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值