迭代对象属性

如果想迭代对象的属性,可以使用 for/in 循环,或者基于 Object.keys() 方法的结果使用 for/of :

1
2
3
4
5
let o = {x:1, y:2, z:3}
let keys = ''
for(let k of Object.key(o)){
keys += k
}

也可以像下面这样迭代每个键对应的值:

1
2
3
4
5
let o = {x:1, y:2, z:3}
let sum = 0
for(let v of Object.values(o)){
sum += v
}

如果你既想要对象属性的键,也想要属性的值,可以基于 Object.entries() 和解构赋值来使用 for/of :

1
2
3
4
5
let o = {x:1, y:2, z:3}
let paris = ''
for(let [k, v] of Object.entries(o)){
paris += k + v
}

Object.entries() 返回一个数组的数组,其中每个内部数组表示对象的一个属性的键/值对。

字符串在 ES6 中是可以逐个字符迭代的:

1
2
3
4
5
6
7
8
let frequency = {}
for(let letter of 'mississippi'){
if(frequency[letter]){
frequency[letter]++
}else{
frequency[letter] = 1
}
}

for/in

把一个对象的所有属性复制到数组中:

1
2
3
let o={x:1, y:2, z:3}
let a=[], i=0
for(a[i++] in o) ;