forEach、for-in與for-of的區別
forEach介紹
objArr.forEach(function (value) {
console.log(value);
});
foreach
方法沒辦法使用break
語句跳出循環,或者使用return
從函數體內返回
for-in介紹
for(var index in objArr){
console.log(objArr[index])
}
以上代碼會出現的問題:
1.index
值 會是字符串(String
)類型
2.循環不僅會遍歷數組元素,還會遍歷任意其他自定義添加的屬性,如,objArr
上面包含自定義屬性,objArr.name
,那這次循環中也會出現此name
屬性
3.某些情況下,上述代碼會以隨機順序循環數組
for-in
循環設計之初,是給普通以字符串的值為key的對象使用的。而非數組。
for-of介紹
for(let value of objArr){
console.log(value)
}
1.可以避免所有 for-in
循環的陷阱
2.不同於 forEach()
,可以使用 break
, continue
和 return
3.for-of
循環不僅僅支持數組的遍歷。同樣適用於很多類似數組的對象
4.它也支持字符串
的遍歷
5.for-of 並不適用於處理原有的原生對象
for-of 遍歷 Set
var uniqueWords = new Set(words);
for (var word of uniqueWords) {
console.log(word);
}
for-of 遍歷 Map
for (var [key, value] of phoneBookMap) {
console.log(key + "'s phone number is: " + value);
}
Map
是鍵值對組成,需要用到 Es6新特性解構
for-of 遍歷原生對象
// 輸出對象自身可以枚舉的值
for (var key of Object.keys(someObject)) {
console.log(key + ": " + someObject[key]);
}