三个for循环的区别

  1. for循环最常用的是利用索引遍历数组:
var arr = ['Apple', 'Google', 'Microsoft'];
for(var i = 0,i < arr.length; i++) {
	x=arr[i];
	console.log(x);
}
  1. for … in可以把一个对象的所有属性依次循环出来:
var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    console.log(key); // 'name', 'age', 'city'
}
//过滤掉继承的属性,用hasOwnProperty();
var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key); // 'name', 'age', 'city'
    }
}

由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for … in循环可以直接循环出Array的索引

var a = ['A', 'B', 'C'];
for (var i in a) {
    console.log(i); // '0', '1', '2'
    console.log(a[i]); // 'A', 'B', 'C'
}//,for ... in对Array的循环得到的是String而不是Number
  1. for of es6推荐,遍历到的是每一个,无论是对Array,Set,map。

Map类型
js中默认对象的表示方式{},即一组键值对。但是有个问题,js中的键必须是字符串,但实际上Number或其他类型作为键也是合理的。
因此引入了新的数据类型Map。

var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95

初始化一个空Map。

var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined

Set类型
Set类型也是一组key的集合,不存储value,Key不重复。

创建Set,key不重复。

var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}

通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果:

s.add(4);
s; // Set {1, 2, 3, '3',4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, '3',4}

删除值

s.delete(3);
s; // Set {1, 2,  '3',4}

**forEach(element,index,Array)**遍历数组中的索引和值。
**forEach(element,key,Map)**遍历Map中的键和值。
**forEach(element,Set)**遍历set中每个值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值