JS中的forEach,forin,forof和for的遍历优缺点及区别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 in:(它⼤部分⽤于遍历对象)
定义:⽤于循环遍历数组或对象属性,fot in循环⾥⾯的index是string类型的,
代码每执⾏⼀次,就会对数组的元素或者对象的属性进⾏⼀次操作
缺点:某些情况下,会出现随机顺序的遍历,因为⾥⾯的值是string类型,所以
增加了转换过程,因此开销较⼤
优点:可以遍历数组的键名,遍历对象简洁⽅便
实例:
//⾸先遍历对象
let person={name:"⽼王",age:23,city:"⼤唐"}
let text=""
for (let i in person){
text+=person[i]
}
原生js和js的区别
输出结果为:⽼王23⼤唐
//其次在尝试⼀些数组
let arry=[1,2,3,4,5]
for (let i in arry){
console.log(arry[i])
}
//能输出出来,证明也是可以的
for of:(可遍历map,object,array,set string等)⽤来遍历数据,⽐如组中的值,
map,set会在下篇⽂章详解,这节只查看遍历对象和数组
优点:避免了for in的所有缺点,可以使⽤break,continue和return,不仅⽀持
数组的遍历,还可以遍历类似数组的对象,⽀持字符串的遍历
最简洁,最直接的遍历数组的语法
⽀持map和Set对象遍历
缺点:不适⽤于处理原有的原⽣对象(原⽣对象是⼀个⼦集,包含⼀些在运动过程中动态创建的对象)
实例:
//遍历数组
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)
}
//我们发现它是不可以的
//但是它和forEach有个解决⽅法,结尾介绍
for:
优点:程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出缺点:结构⽐while循环复杂,容易出编码错误
实例:
//⾸先它和forEach,forof⼀样不可以遍历对象
//解决办法:就是把对象先转化为数组类型- -
//有⼀个对象:
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同理
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论