forEach、for-in與for-of的區別


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, continuereturn
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]);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM