JavaScript中的map和set

 

 购物车例题:

    var mycar = {

            data:new Map(),

            clear:function(){

                this.data.clear()

            },

            jianshao:function(id){

                let obj=this.data.get(id)

                if(obj){

                    obj.count--

                    if(obj.count<=0){

                        this.data.delete(id)

                    }

                }

            },

            add:function(id){

                let obj=this.data.get(id)

                obj.count++

                this.data.set(id,obj)

            },

            total:function(){

                var result = 0

                this.data.forEach(function(el){

                    console.log(el);

                    result+=el.count*el.price

                })

                return result

            },

            network:function(){

                var jiashuju = [{

                    id:123,

                    title:"鱼香肉丝",

                    price:18,

                    count:1

                },{

                    id:124,

                    title:"大肉",

                    price:10,

                    count:1

                },{

                    id:125,

                    title:"米饭",

                    price:3,

                    count:3

                }];

                var self=this

                jiashuju.map(function(el){

                    self.data.set(el.id,el)

                })

            }

        }

        

        mycar.network()

        mycar.add(125)//添加一份米饭

        mycar.jianshao(124)//减少大肉

        var re1 = mycar.total()

        console.log(re1);

         

        console.log(mycar.data);

        

        mycar.clear() //清空mycar中的所有内容

        console.log(mycar.data);

        

set对象存储的值总是唯一的,所有需要判断两个值是否恒等

 var arr=[11,22,33,11]

        var s1=new Set(arr) //遍历的数组 然后把数组的元素们调用s1.add添加进集合中

        var arr2 = Array.from(s1) //取出了数据容器中的所有数据,然后存入新数组返回值

        s1.add(100)

        s1.add(100) //基本数据重复了不会打印

        s1.add(200)

        s1.add('hello')

        s1.add([1,39,19])

        s1.add([1,39,19])

        console.log(s1); //Set(5) {100, 200, 'hello', Array(3), Array(3)}

        s1.forEach(function(el){

            console.log(el);

        })

 var arr=[10,20,30,10,{}]

        var arr2=[...arr] //把arr的元素全部取出来 然后存入新数组arr2中

        console.log(arr,arr2,arr==arr2,arr[4]==arr2[4]);

        // (5) [10, 20, 30, 10, {…}] (5) [10, 20, 30, 10, {…}] false true

        

        

        var arr=[10,20,30]

        var arr2=[100,200,300]

        var s1=new Set([10,22,...arr,...arr2])

        console.log(s1); //Set(7)  因为有共同的10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值