购物车例题:
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