const arr = [2, 3, 5, 4, 5, 2, 2];
for(let i of arr){
console.log(i) //打印出來的是value 2,3,5,4,2,2
}
for(let i in arr){
console.log(i) //打印出來的是下標 0,1,2,3,4,5,6
}es6
const obj = {'a':1,'b':2,'c':3}
for(let i in obj){數組
console.log(i) //打印出來的是key a,b,c
}
for(let i of obj){函數
console.log(i) //打印出來的是obj is not iterable,這是由於在es6中object沒有規定默認的屬性iterable
}
解決辦法:
使用Object.keys方法將對象的鍵名生成一個數組,而後遍歷這個數組。
for (let i of Object.keys(obj)) {
console.log(key + ': ' + obj[key]);
}
另外一個方法是使用 Generator 函數將對象從新包裝一下。
function* entries(obj) {
for (let key of Object.keys(obj)) {code
yield [key, obj[key]];
}
}對象
for (let [key, value] of entries(obj)) {
console.log(key, '->', value);
}
// a -> 1
// b -> 2
// c -> 3it