循环,Map和Set

目录

 

for ... in

While循环

do ... while

Es6 Map 和 Set

for ... of

forEach()


for ... in

for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:

var obj = {name:'www',age:'18',sex:'女'}
for(let o in obj){
  console.log(o)
}

While循环

只有一个判断条件,当条件为true时则会一直执行下去

var x = 0;
var n = 8;
while(n>0){
  x=x+2;
  n=n-2;
}
console.log(x);//8

do ... while

每次循环执行后再判断条件,所以至少会执行一次

Es6 Map 和 Set

map

map是一组键值对的结构,具有极快的查找速度

var m = new Map([['wwww',88],['mmmm','99'],['zzzz','66']])
m.get('zzzz') // '66'

初始化Map需要一个二维数组,或者直接初始化一个空MapMap具有以下方法:

var m = new Map()//初始化一个数组
m.set('Jan',66)//新增一个key-value
m.set('Annie',88)
m.has('Annie')//判断是否存在 Annie 为true
m.get('Annie')// 88
m.delete('Annie')//删除Annie
m.has('Annie')//判断是否存在 Annie 为false
m.get('Annie')//undefined

一个key只能对应一个value,如果重复对一个key赋值value得话,会替换掉前面的value

var m = new Map();
m.set('Annie',88)
m.set('Annie',99)
m.get('Annie')//99

Set

set和map类似,是一组key的存储,不保存value。由于key是不能重复的,所以set中,没有重复的key

要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set。例如

var s = new Set()
var s = new Set([1,2,3,4,5,6]) 

重复的数组会在set中被自动过滤

var s = new Set([1,1,1,2,3,'3',4,5,5,6])
s //Set(7) {1, 2, 3, "3", 4, 5, 6}
  //注意:3 和'3'是不同元素
s.add(10)//添加元素
s //Set(8) {1, 2, 3, "3", 4, 5, 6, 10}
s.delete(1)//删除元素
s //Set(7) {2, 3, "3", 4, 5, 6, 10}

for ... of

遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型。具有iterable类型的集合都可通过for ... of循环来遍历

var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
    console.log(x);
}
for (var x of s) { // 遍历Set
    console.log(x);
}
for (var x of m) { // 遍历Map
    console.log(x[0] + '=' + x[1]);
}

forEach()

var s = new Set(['a','b','c'])
s.forEach((element,sameElement,set)=>{
    console.log(element);
    //console.log(sameElement);
    //console.log(set);
    
})

var m = new Map([['a',1],['b',2],['c',3]])
m.forEach((value,key,set)=>{
    console.log(value)
})

var a = ['A', 'B', 'C'];
a.forEach(function (element) {
    console.log(element);
});

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值