美文网首页
for-in for-of 循环 迭代器 详解

for-in for-of 循环 迭代器 详解

作者: 巴巴呀呀 | 来源:发表于2018-04-19 07:27 被阅读0次

实现数组遍历

ES4及以前

for (var index = 0; index < myArray.length; index++)
    {console.log(myArray[index]);
}

缺点:不简洁

ES5

myArray.forEach(function (value) {
    console.log(value)
});

缺点:不能使用break语句中断循环,也不能使用return语句返回到外层函数

ES5

var myArray = ["a","b","c"];
for (var index in myArray) {
    console.log(myArray[index]);
}

运行结果

0
1
2

缺点:index拿到的不是"a","b","c",而是索引0,1,2,这其他语言不太一样

再举个🌰

ES5

Object.prototype.objCustom = function () {}; 
Array.prototype.arrCustom = function () {};
var myArray = ["a","b","c"]
myArray.testKey = "hello"
for (var index in myArray) {
    console.log(index)
}

运行结果

0
1
2
testKey
arrCustom
objCustom

缺点:for-in 循环体除了遍历数组元素外,还会便利自定义属性,就连数组原型链上的属性都能被访问到

Tips: for-in 使用范围,for-in常用于遍历对象的属性,不适合数组的遍历

ES6 for-of

var myArray = ["a","b","c"];
for (var value of myArray) {
    console.log(value);
}

运行结果

a
b
c

缺点:IE部分浏览器不兼容

优点:除了解决了以上缺点外,还支持Dom NodeList对象,也支持字符串遍历,也支持Map和Set对象遍历

ES6 遍历Set对象

var uniqueWords = new Set(words);
for (var word of uniqueWords) {
   console.log(word);
}

ES6 遍历Map,需要用到解构

for (var [key, value] of phoneBookMap) {
   console.log(key + "'s phone number is: " + value);
}

ES6 遍历对象属性

for (var key of Object.keys(someObject)) {
  console.log(key + ": " + someObject[key]);
}

Tips:for-of 更适合迭代器,而for-in更适合遍历对象属性

相关文章

  • for-in for-of 循环 迭代器 详解

    实现数组遍历 ES4及以前 缺点:不简洁 ES5 缺点:不能使用break语句中断循环,也不能使用return语句...

  • ES6(八)迭代器与生成器2

    1.可迭代对象与 for-of 循环 2.内置的迭代器 3.字符串的迭代器 可迭代对象与 for-of 循环 可迭...

  • Swift 5.1 (5) - 控制流

    控制流 For-In循环 使用for-in循环迭代数组 使用for-in循环迭代字典 使用for-in循环迭代数值...

  • for-of循环

    ES6为我们提供了for-in循环和for-Each循环还要强大 之前的for-in循环 for-of循环 遍历数...

  • js 循环有哪些?

    js 循环有哪些? for / for-in / for-of / foreach 专门为循环设计 map / f...

  • 详解for,for-in,forEach,for-of几种循环

    今天详细梳理下几种 for 循环,每种都有自己的特点和使用场景。下面我们开始梳理说明: 所有?均来自 MDN 官网...

  • 一、迭代器和for-of循环

    一、迭代器和for-of循环 for (var value of myArray) {console.log(va...

  • 迭代器和for-of循环

    迭代器和for-of循环最早的数组遍历方式 var a = ["a", "b", "c"];for(var ind...

  • for循环、for-in、forEach、for-of

    要遍历数组,最简单的方式即for循环: 这样的方式是最简单直接的方法,但是这样的方式需要的变量比较多。 在ES5之...

  • for-of

    for-of方法: for-of的语法看起来跟for-in很相似,但它的功能却丰富的多,它能循环很多东西。 for...

网友评论

      本文标题:for-in for-of 循环 迭代器 详解

      本文链接:https://www.haomeiwen.com/subject/ipeikftx.html