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. 1.index 值 會是字符串(String)類型
  2. 2.循環不只會遍歷數組元素,還會遍歷任意其餘自定義添加的屬性,如,objArr上面包含自定義屬性,objArr.name,那此次循環中也會出現此name屬性
  3. 3.某些狀況下,上述代碼會以隨機順序循環數組
for-in循環設計之初,是給普通以字符串的值爲key的對象使用的。而非數組。


for-of介紹

for(let value of objArr){
    console.log(value)
}複製代碼
  1. 1.能夠避免全部 for-in 循環的陷阱
  2. 2.不一樣於 forEach(),能夠使用 break, continue 和 return
  3. 3.for-of 循環不單單支持數組的遍歷。一樣適用於不少相似數組的對象
  4. 4.它也支持字符串的遍歷
  5. 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]);
}複製代碼
相關文章
相關標籤/搜索