js数组操作的for,forEach,for in,for of等区别

数组操作是我们使用后端数据必不可少的知识

无论是json、数据库还是后台的nodejs,vue都需要我们熟练的操作数组等。


数组操作的区别

 1、forEach:
  1、不能遍历对象
  2、不支持break,支持return
 2、for in:
1、可以遍历数组和对象

  2、会把序列转换为字符串

                3、支持break跳出循环,不支持return

 3、for of:
  1、只能遍历数组,不能遍历对象
  2、支持return



常规for遍历

1、可以清晰看出运行流程

2、可以通过break跳出循环遍历,不支持return

3、可以遍历对象

var arr = [1,2,3,4,5] ;
var num = 3 ;
for(let i = 0;i<arr.length;i++){
	if(i==num){        //当i=3,即第4次时,跳出循环,不再执行后面的循环
	    break;
	};
	console.log(arr[i]);
};


forEach遍历

forEach()是数组的一个方法(把数组当成对象看)

forEach(回调函数) 回调函数填写function(item多个数组参数,index多个序号,arr数组本身){遍历进行的行为}

一般不需要用到index序列,arr数组本身

1、声明式编程,不关心如何实现,不知道运行流程,不知道原理,就可以直接用

2、不支持break的使用,支持return

3、不能遍历对象,这个.forEach()方法是数组的方法,不能用于对象 obj.forEach()不存在,可以自己封装

运行示例:

与普通循环一样,循环数组length次

var arr = [1,2,3,4,5,] ;
arr.forEach(function(item,index){
	console.log(item);
});

测试break和return结果:

break:

var arr = [1,2,3,4,5] ;
var num = 3 ;
arr.forEach(function(item,index){
	if(index==num){
		break;    //forEach不支持break跳出循环,会报错
	};
	console.log(item);
})

return:

var arr=[1,2,3,4,5];
var num = 3 ;
arr.forEach(function(item,index){
	if(index==num){
		return;    //当执行到return 可跳出当前循环,执行下一次循环
                           //无法使用return操作输出值,只能用于控制跳出当前循环
	};
	console.log(item);
})


遍历对象:
var obj = {name:'kingan',age:'20'};
obj.forEach(function(item,index){        //.forEach()方法不能用于对象
	console.log(item);
})


for in 遍历

for in是原生js里的一种循环语法,并不是数组的方法

输出的不是数组参数而是数组参数的序列(字符串类型)

可以遍历对象

缺点:把数组内的参数变成字符串类型

少用,因为并不是我们需要使用的值

for in 示例
var arr = [1,2,3,4,5] ;
for(let key in arr){
	console.log(key);            //key是数组参数的序列
	console.log(typeof key);    //输出多个数组参数序列 会发现是字符string类型
}

测试break结果
for(let key in arr){
	if(key==num){
		break;        //当符合if条件时,跳出循环
	};
	console.log(key);
	console.log(typeof key);
}

遍历对象:
var obj={name:'kingan',age:'20'}
for(let key in obj){
	console.log(key,obj[key]);        //key是对象属性名,obj.key对象属性值,这里用obj[key]连接符
}


for of 遍历

支持return,能中途停止遍历

不能遍历对象

for of 示例
var arr = [1,2,3,4,5] ;           //for of不能遍历对象
var num = 3;
for(let val of arr){
	console.log(val);        //val是数组内的参数
	console.log(typeof val); //for of不会把数组参数变成字符串类型
}


测试break结果
var arr = [1,2,3,4,5] ;
var num = 3;
for(let val of arr){
        if(val==num){
		break;            //支持break跳出循环,当符合if跳出循环;不支持return会报错
	};
	console.log(val);        //val是数组内的参数
	console.log(typeof val); //for of不会把数组参数变成字符串类型
}

遍历对象:
var obj = {name:'kingan',age:'20'};
for(let val of obj){
	console.log(val);    //for of这个循环语法不能遍历对象
}



如有建议和疑问可联系 
QQ:1017386624 
邮箱:1017386624@qq.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值