美文网首页前端开发技巧
js的 for...in 和 for...of的用法

js的 for...in 和 for...of的用法

作者: 一个写前端的姑娘 | 来源:发表于2018-12-06 16:43 被阅读43次

for...in和for...of两个遍历

  • for...in是es5标准,用来遍历key值,遍历对象和数组
// 遍历对象
let obj = {
  a: 1,
  b: 2,
  c: 3
}
for (let key in obj) {
  console.log(key)
}  // a  b  c
// 遍历数组
let arr = [1, 2, 3]
for (let key in arr) {
  console.log(key)
}  // 0  1  2
  • for...of是es6标准,用来遍历value值,遍历数组,不能遍历普通对象
// 遍历数组
let arr = [1, 2, 3]
for (let value of arr) {
  console.log(value)
}  // 1  2  3

区别

  1. for...in遍历key值,for...of遍历value值
  2. for...in可以遍历对象或者数组,但是一般不推荐遍历数组,for...of不能遍历普通对象

for...of不能遍历普通对象的原因

原因是:普通对象没有Symbol.iterator属性,如果一个对象拥有Symbol.iterator属性,那么就可以使用for...of遍历

// 下面的例子摘自 阮一峰老师的ES6入门第三版
let obj = {
  data: [ 'hello', 'world' ],
  [Symbol.iterator]() {
    const self = this;
    let index = 0;
    return {
      next() {
        if (index < self.data.length) {
          return {
            value: self.data[index++],
            done: false
          };
        } else {
          return { value: undefined, done: true };
        }
      }
    };
  }
}
for (let value of obj) {
  console.log(value)
}   // hello world
// 类似数组的对象遍历  直接引用Array.prototype[Symbol.iterator]  
// 普通对象部署数组的Symbol.iterator方法,并无效果
let iterable = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3,
  [Symbol.iterator]: Array.prototype[Symbol.iterator]
};
for (let item of iterable) {
  console.log(item); // 'a', 'b', 'c'
}

相关文章

  • js 循环

    js中forEach,for in,for of循环的用法 js的 for...in 和 for...of的用法 ...

  • js的 for...in 和 for...of的用法

    for...in和for...of两个遍历 for...in是es5标准,用来遍历key值,遍历对象和数组 for...

  • 第22周技术周报

    1. for...of VS for...in的用法 for...of是用于遍历实现了Iterator接口的元素 ...

  • js for...of和for...in

    上代码先遍历某个对象 再遍历一个数组 for in 的特点 结合上面的两个例子,分析得出: for ... in ...

  • [JS] for...in 和for...of的区别

    for...in 递归的对象是object的属性for...of 递归的对象是一系列可递归的可迭代对象,例如Arr...

  • JavaScript for...in和for...of的区别

    for...in for...of的区别 for...in 循环的是key; for...of 循环的是value...

  • for...in和for...of

    for...in 适合遍历对象/数组对象循环得到的是索引值,且是字符串类型的,普通for循环得到的索引值是数字类型...

  • for...in 和for...of

    在JavaScript中遍历数组通常是使用for循环,自ES5发布后也可以使用forEach,另外在ES5具有遍历...

  • JavaScript:for...of 和 for...in 的

    无论是 for...in 还是 for...of 语句都是迭代一些东西。 它们之间的主要区别在于它们的迭代方式。...

  • for...in和for...of的区别

    for...in ● 遍历对象的可枚举属性,包括对象从原型上继承的属性。●如果对象值值为null或undefine...

网友评论

    本文标题:js的 for...in 和 for...of的用法

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