第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 比较for for...in for...of forEach

比较for for...in for...of forEach

时间:2019-07-04 00:47:53

相关推荐

比较for for...in for...of forEach

1. for

优点:

程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出可以使用continue 跳出本次循环,进行下次循环可以使用break 中止for循环

缺点:

它和forEach,for of一样不可以遍历对象(解决办法:就是把对象先转化为数组类型)

//有一个对象:let obj={a:1,b:2,c:3}//用Object.keys属性转化let obj2=Object.keys(obj)//最后就可以用来遍历了for (let i=0;i<obj2.length;i++){console.log(obj2[i])}//输出结果就能出来了,forEach,for of同理

2. for…in

for in的循环性能循环很差。性能差的原因是因为:for in会迭代对象原型链上一切可以枚举的属性。

定义:用于循环遍历数组或对象属性,fot in循环里面的index是string类型的,

代码每执行一次,就会对数组的元素或者对象的属性进行一次操作

优点:可以遍历数组的键名,遍历对象简洁方便

缺点:

for in会将公有(prototype) 中可枚举的属性也遍历了。可以使用hasOwnProperty来阻止遍历公有属性。for in循环主要遍历数字优先,由小到大遍历for in无法遍历Symbol属性(不可枚举)。

2.1 遍历对象是获取key值

//首先遍历对象let person={name:"老王",age:23,city:"大唐"}let text=""for (let i in person){text+=person[i]}输出结果为:老王23大唐

2.2 遍历数组是index值

//其次在尝试一些数组let arry=[1,2,3,4,5]for (let i in arry){console.log(arry[i])}//能输出出来,证明也是可以的

3. for…of

一个数据结构只要部署了Symbol.iterator属性,就被视为具有iterator接口,就可以用for...of循环遍历它的成员。也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。

for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。

优点:避免了for in的所有缺点,可以使用break,continue和return.

缺点:不适用于处理原有的原生对象(原生对象是一个子集,包含一些在运动过程中动态创建的对象)

//遍历数组let arr=["nick","freddy","mike","james"];for (let item of arr){console.log(item)}//暑促结果为nice freddy mike james//遍历对象let person={name:"老王",age:23,city:"唐山"}for (let item of person){console.log(item)}//我们发现它是不可以的

4. forEach

(三个参数,第一个是value,第二个是index,第三个是数组体)

缺点:不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据,方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数

优点:便利的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少了出错的效率

定义:用于调用数组的每个元素,并将元素传递给回调函数

//我们先用它来遍历数组let arry=[9,8,7,6,5,4]array.forEach(function(value,index,arr){console.log(value)})//输出结果为9 8 7 6 5 4//首先有人疑问它能不能用来遍历对象(一开始我也不知道)?//我们用它来遍历对象试试可不可以let obj={a:1,b:2,c:3,d:4}obj.forEach(function(value,index,oObj){console.log(value)}//输出结果会是obj.forEach is not a function,//所以forEach不可以遍历对象,这也是它和for in的一个区别

for for…in, for of , forEach 图表对比

for for…in, for of , forEach 效率比较

for > forEach > for of >for in

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。