for

143 阅读1分钟

正向循环

从 0 开始循环 3 次

// 区间: 0<=x<3
for(let i=0; i<3; i++) {
    console.log(i)
}
// 0
// 1
// 2

从 1 开始循环 2 次

for(let i=1; i<3; i++) {
    console.log(i)
}
// 1
// 2

从 3 开始循环 3 次

for(let i=3; i<6; i++) {
    console.log(i)
}
// 3
// 4
// 5

逆向循环

从 6 开始循环 2 次

for(let i=6; i>4; i--) {
    console.log(i)
}
// 6
// 5

从 9 开始循环 3 次

for(let i=9; i>6; i--) {
    console.log(i)
}
// 9
// 8
// 7

逆向遍历数组

  • 次数: arr.length
  • 起点: arr.length-1
  • 起点 - 终点 = 次数
    • arr.leng-1 - x=arr.length
    • x = -1
   let arr = ['a', 'b', 'c' ]

    for (let i = arr.length-1; i>-1; i-- ) {
        console.log(arr[i])
    }

for of

for v of 遍历一个可迭代对象,如数组、字符串、Map/Set 。针对一个迭代对象,所以获得 value

遍历数组

let iterable = [10, 20, 30];

for (let value of iterable) {
  console.log(value);
}
// 10
// 20
// 30

遍历字符串

let iterable = "boo";

for (let value of iterable) {
  console.log(value);
}
// "b"
// "o"
// "o"

遍历map对象

let map = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let [key, value] of map) {
  console.log(value);
}
// 1
// 2
// 3

for (let entry of map) {
  console.log(entry);
}
// [a, 1]
// [b, 2]
// [c, 3]

for in

for key in 遍历一个对象的可枚举属性,如对象、数组、字符串。针对属性,所以获得 key
记忆: for index in for value of

遍历对象

var obj = {a:1, b:2, c:3};
// 注意 ---> key是一个字符串
for (var key in obj) {
  console.log("obj." + key + " = " + > obj[key]);
}

// 输出:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

遍历数组

let list = [10, 20, 30];
// 注意 ---> index是一个字符串<<============================================
for (let index in list) {
  console.log(index);
}
// '0'
// '1'
// '2'

for await of

类似于 Promise.all

async function () {
    const list = [
        getData(10),
        getData(20)
    ]

    // 跟Promise.all 作用一样
    // Promise.all(list).then(res => console.log(res))
    for await (let p of list) {
        console.log(p)
    }
}

每隔一秒打印一次

async function () {
    for (let item of [100, 200]) {
        const v = await getData(item)
        console.log('v', v)
    }
}