js常用的数组遍历

本文深入解析JavaScript中数组的多种循环方式,包括基础for循环、for...in、for...of及高级迭代方法如forEach、map、filter和find。通过具体代码示例,详细阐述了每种循环的特点与应用场景,为开发者提供全面的JS数组操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、for循环类

1. 基础for循环
//for
let arr = [{id: 1, name: '男'}, {id: 2, name: '女'}];
for (let i = 0, len = arr.length; i < len; i++) {
	console.log(i);       //  0 1
	console.log(arr[i].name);  //男 女
}
2. for in循环
/**
 * for in
 * @param key 索引(下标)
 */
for (var key in arr) {
  console.log(key);  //  0 1 返回数组索引
  console.log(arr[key].name) //  男 女
}
3. for in循环
/**
* for of
* @param item 对象
*/
for (let item of arr) {
 console.log(item.name); //  男  女
}
// 输出数组索引
for (let item of arr.keys()) {
 console.log(item);  // 0 1
}
// 输出内容和索引
for (let [item, val] of arr.entries()) {
 console.log(item + ':' + val); //  0:男  1:女
}

二、返回值相关

1. forEach循环
/**
 * forEach
 * @param item 对象 必填参数
 * @param index 索引(下标)
 * @param arr 数组本身
 * @return undefined(即无返回值)
 */
arr.forEach((item, index, arr) => {
  console.log(item.name);  //男 女
  console.log(index);  // 0 1
  console.log(arr);    // [{id: 1, name: '男'}, {id: 2, name: '女'}];
})
2. find,map,filter语法
/**
* find,map,filter
* @param item 对象(必写)
* @param index 索引(下标)
* @param arr 数组本身
* @return
* find(存在返回第一个元素,无返回undefined)
* filter(返回符合条件的数组,无返回[])
* map(不用于条件返回而用于单个属性返回成数组,不存在此属性返回[undefined,undefined]
*/
2.1 find 语法
var arr = [1,2,3,4,5,6,7];
 var ar = arr.find((item,index)=>{
     return item>5;
 });
console.log(ar);//6
console.log(arr);//[1,2,3,4,5,6,7]
2.2 filter 语法
var arr2 = [1,2,3,4,5,6,7];
 var ar2 = arr2.filter((item,index)=>{
     return item>5;
 });
console.log(ar2);//[6,7]
console.log(arr2);//[1,2,3,4,5,6,7]
2.3 map 语法
//处理数组
var arr = [1,2,3,4,5];
 var ar = arr.map(function(item){
    return item*2;
 });
console.log(ar);//[2,4,6,8,10]
console.log(arr);//[1,2,3,4,5]
//获取数组某个属性
var arr3 = [{id:1,name:'张三'},{id:2,name:'李四'}];
var ids = this.arr3.map(item => item.id).toString();
var names = this.arr3.map(item => item.id).toString();
var arr4= this.arr3.map(item => {
	if(item.name == '张三'){
		item.name = '王五'
	} 
	return item
});
console.log(ids);//1,2
console.log(names);//张三,李四
console.log(arr4);//[{id:1,name:'王五'},{id:2,name:'李四'}];

备注:

forEach、map、filter、reduce、every、some 都会有 break 和 continue 不生效的问题,因为是在function中,但function解决了闭包陷阱的问题;要使用break、continue 可以使用 for、for…in、for…of、while。 用于遍历数组元素使用:for(),forEach(),map(),for…of 用于循环对象属性使用:for…in

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值