浅谈for的家族成员

平常的代码编写中总少不了实现循环的需求,当你须要对代码块执行屡次相同或相似的操做时就要用到循环,其中使用占比最多的固然是for循环,今天来对这个强大的for ‘家族’ 作作小总结数组

for

最基础最经常使用一样也是功能最强大的固然是for循环自己了,来看看基本结构
for(声明循环变量;循环的条件;修改循环变量){ 循环执行的代码块 }
=>   for(let i;i<length;i++){ ... }

来个例子:code

var arr = [];
for(let i=0;i<5;i++){
    arr.push(i);
}
console.log(arr);    //[0,1,2,3,4]

for的优势:对象

可控性强,能作的操做多,你能够在这个代码块中书写复杂的循环条件,以至来修改或达到你所需的效果

缺点:索引

相对后面要说的循环方式代码较为繁琐,不够简易,好比操做数组的时候,大多时候是针对下标或者内容,而不是实现复杂的业务逻辑

for in

for in用于循环对象属性,当须要遍历一个对象或关联数组,去获取他们每一项的内容或者对其进行操做时,经常使用到for in,
普通的循环只能遍历索引数组,即下标为数字的数组,而关联数组则是自定义下标名称的数组,
循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操做。
for(变量/下标 in 数组/对象){ 循环执行的操做 }
=>   for(var key in arr){ ... }

来个例子:io

var score=[76,80,86,73,92];
var sum=0;
for(var key in score){
    sum+=score[key];
}
console.log(sum);   // 407
适合用来操做关联数组而不是索引数组

forEach

forEach是数组的一个API,若是仅遍历数组而不须要没有返回值,
或仅对原数组中的元素执行修改操做,不须要返回新数组时,
forEach是一个不错的选择,它能够得到数组的下标和内容
arr.forEach(当前内容,下标,数组){ ... }
=>   arr.forEach(elem,i,arr){ ... }
// 根据须要选择参数的个数

来个例子:console

var nums=[1,2,3,4,5];
nums.forEach(function(elem,i,arr){
  arr[i]*=2;
})
console.log(nums);    //2,4,6,8,10
优势:既能够得到元素的下标,又能修改元素的内容
缺点:没法控制遍历时候的顺序,是数组API,好比arguments之类的类数组对象使用不了

for of

ES6新增的极简化for循环,经常使用于遍历索引数组
for(var 数组中的当前元素 of 数组){ ... }
=>   for(var elem of arr){ ... }

来个例子:for循环

var names=["Tom","Alex","Pand"]
for(var name of names){//遍历索引数组
  //of依次取出names数组中每一个人名保存到前边的变量name中
  console.log(name + " - 到!");
}
// Tom - 到!
// Alex - 到!
// Pand - 到!
优势:书写简化的for循环,能够控制遍历的顺序
缺点:只能获取元素内容,没法获取下标

以上就是个人一下小总结,主要经过此次整理让本身回顾一下概念知识,欢迎指正错误function

不努力
就淘汰基础

相关文章
相关标签/搜索