美文网首页
for循环in和of

for循环in和of

作者: 小猪x | 来源:发表于2022-10-08 12:31 被阅读0次

for ... in

把一个对象的所有属性依次循环出来:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    console.log(key); // 'name', 'age', 'city'
}

要过滤掉对象继承的属性,用hasOwnProperty()来实现:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key); // 'name', 'age', 'city'
    }
}

由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:

var a = ['A', 'B', 'C'];
for (var i in a) {
    console.log(i); // '0', '1', '2'
    console.log(a[i]); // 'A', 'B', 'C'
}

请注意,for ... in对Array的循环得到的是String而不是Number。

for..of

let listData = ['a', 'b', 'c', 'd'];
for (let value of listData) {
    console.log('value', value) // a b c d
}

先说结论:

1、推荐循环对象属性,使用for...in, 遍历数组使用for...of

2、for...in循环出的是key,for...of循环出的是value

3、for...of是ES6新引入的特性。修复ES5的for...in的不足

4、for...of不能循环普通的对象,需要通过和Object.keys()搭配使用

假设遍历一个数组

使用for...in:

let aArray = ['a', 'b', 'c'];
for (let index in aArray) {
    console.log(aArray[index]); // 输出a b c
}

使用for...of:

let aArray = ['a', 'b', 'c'];
for (let value of aArray) {
    console.log(value);  // 输出a b c
}

好像只是写法不一样而已,为什么说for...of修复了for...in的缺陷和不足。
假设我们往数组添加一个属性name:
aArray.name = 'demo',再分别查看上面写的两个循环:

let aArray = ['a', 'b', 'c'];
aArray.name = 'demo';
for (let index in aArray) {
    console.log(aArray[index]); // 输出a b c demo
}
for(var value of aArray){
    console.log(value); // 输出a b c
}

所以说,作用于数组的for-in循环除了遍历数组元素以外,还会遍历自定义属性。

for...of循环不会循环对象的key,只会循环出数组的value,因此for...of不能循环遍历普通对象,对普通对象的属性遍历推荐使用for...in

如果实在想用for...of来遍历普通对象的属性的话,可以通过和Object.keys()搭配使用,先获取对象的所有key的数组
然后遍历:

let student = {
    name: '小猪',
    age: 22,
    locate: {
        country: '中国',
        city: '广州',
    }
};

// 使用Object.keys()方法获取对象key的数组
for (let key of Object.keys(student)) {
    console.log(key, student[key]); 
}

相关文章

  • While循环和for循环

    1.while 循环 和生活中的循环类似,Python 中的循环指重复执行有规律的操作。所以一切重复的事情都可以“...

  • while循环和for循环

    while 循环 while(true){// 无意义 死循环console.log("一直执行");}while...

  • for循环in和of

    for ... in 把一个对象的所有属性依次循环出来: 要过滤掉对象继承的属性,用hasOwnProperty(...

  • JavaScript-循环语句

    循环语句有两种 for 和 while 。 while 循环 for 循环 do...while 循环 这个循环和...

  • 体循环和肺循环

  • “厄运循环”和“快乐循环”

    《阈限思维》作者提到这样一件事: 他们家收养了一只营救犬‘暴脾气’,圣诞夜晚宴时,他们给这只狗一根大骨头,狗变得凶...

  • 增强for循环和普通 for循环

    整体来说: 增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合中元素的而不使用索引的话,建议用此方...

  • 正循环和逆循环

    ️人活明白了,从此做什么都成功,走向正循环的道路; ️人活不明白,做什么都受挫,在负循环的圈子跳不出来,成了懂很多...

  • typescript笔记(四)

    一、循环:for循环、for...in...循环、for…of 、forEach、every 和 some 循环、...

  • python3 入门笔记2 while 循环

    while 循环 另外一种循环是 while 循环,它的语法和用途都和 for 循环 有些不同。 for 循环 适...

网友评论

      本文标题:for循环in和of

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