forEach 循环无法中途跳出,break 命令或 return 命令都不能奏效
for...of 循环可以与break、continue 和 return 配合使用,跳出循环
遍历数组用of
var arr = ['red', 'green', 'blue']
for(let item in arr) {
console.log('for in item', item)
}
/*
for in item 0
for in item 1
for in item 2
*/
for(let item of arr) {
console.log('for of item', item)
}
/*
for of item red
for of item green
for of item blue
*/
遍历对象用in
var obj = {
'name': 'Jim Green',
'age': 12
}
for(let key in obj) {
console.log('for in key', key)
}
/*
for in key name
for in key age
*/
let obj = {a: '1', b: '2', c: '3', d: '4'}
for (let o in obj) {
console.log(o) //遍历的实际上是对象的属性名称 a,b,c,d
console.log(obj[o]) //这个才是属性对应的值1,2,3,4
}
总之,for...in 循环主要是为了遍历对象而生,不适用于遍历数组
for...of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象
遍历对象
for (var key in listAll) {
console.log(key)
console.log(obj[key])
keys.push(key);
values.push(obj[key]); //取得value
}
image.png