JS中常用的for循环

210 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情

这两天在刷算法题的时候,要写一个简单的for循环,但是不需要写每次循环到最后要执行的表达式,一时对该循环包含的表达式的用法有些模糊,还需要查看文档。因此对经常需要使用的for循环做下总结区分,加深认识。

for循环

通过初始条件、结束条件和递增条件来循环执行语句块一定的次数。 常用于遍历数组或类数组

// 遍历数组,根据下标获取到对应元素
const arr = [1, 2, 3]
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]); // '1' '2' '3'
}

//可以用于遍历对象   由于对象没有长度,所以使用 Object.keys() 获取对象的所有属性,以数组形式返回
const obj = {
  name: '猫',
  sound: '喵喵喵',
}
for (let i = 0, keys = Object.keys(obj); i < keys.length; i++) {
  console.log(obj[keys[i]]) //'猫'  '喵喵喵'
}

i = 0 初始条件,变量声明或者变量赋值语句

i < arr.length 结束条件,用于确定每一次循环是否能被执行。满足时继续循环,不满足退出循环。如果忽略不写,默认为真,就必须使用break语句退出循环,否则就是死循环

i++ 递增条件,每次循环的最后要执行的表达式

注:这三个条件表达式都是可选的

for...in

循环遍历对象的属性

const obj = {
  name: '猫',
  sound: '喵喵喵',
}
for (let key in obj) {
  console.log(key) //'name'  'sound'
}

const arr = [7, 8, 9]
for (let index in arr) {
  console.log(index); //'0', '1', '2'
}

注: Array 也是一个对象,for ... in循环可以直接循环出Array的索引。 Array 的索引被视为对象的属性,循环得到索引值是String类型而不是Number类型

for...of(ES6新增的循环)

可以用于遍历数组,类数组对象(比如arguments对象、DOM NodeList 对象)和可迭代对象(比如Map 和 Set)。

const arr = [7, 8, 9]
for (let val of arr) {
  console.log(val); //'7', '8', '9'
}

forEach

对数组的每个元素执行一次给定的callback函数。用于遍历数组

const arr = [7, 8, 9]  
arr.forEach((data,index,arr) => {
    console.log(data); //'7', '8', '9'
});

callback 函数的三个参数

data:数组当前项的值

index:数组当前项的索引(可选)

arr:数组对象本身(可选)

引申:循环控制语句

  1. break

跳出当前循环,继续执行循环后面的语句。如果循环有多层,则break只能跳出一层。

  1. continue

跳过本次循环,继续执行下一次循环(在for循环,continue之后执行的语句,是循环变量更新语句i++)

注: forEach 不能正确响应 break、continue 语句。