js遍历数组的五种方式

js遍历数组的五种方式

for循环遍历数组

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

// 1 2 3 4 5 6

优化代码:

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

// 1 2 3 4 5 6

当数组的长度不回改变时,我们使用一个临时变量来存储数组的长度,以获得更好的效率(因为每次比较的时候都省去计算arr.length)。当数组较大时优化效果才会比较明显。

forEach

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

数组自带的遍历方法,虽然使用频率略高,但是性能仍然比普通循环略低。
数组里的元素个数有几个,该方法里的回调就会执行几次。
可以使用for就尽量不要使用forEach。

map

var arr = [1, 2, 3, 4, 5, 6]
var newArr = arr.map(function (item, idnex) {
    return item * item
})

console.log(newArr)    // [1, 4, 9, 16, 25, 36]

遍历每一个元素并且返回对应的元素(可以返回处理后的元素) (map 映射 一一 对应)
返回的新数组和旧数组的长度是一样的
性能比forEach差

filter

var arr = [
	{ id: 1, name: '买笔', done: true },
	{ id: 2, name: '买笔记本', done: true },
	{ id: 3, name: '练字', done: false }
]
    
var newArr = arr.filter(function (item, index) {
	return item.done
})

console.log(newArr)

// [{ id: 1, name: '买笔', done: true },{ id: 2, name: '买笔记本', done: true }]

遍历数组,过滤出符合条件的元素并返回一个新数组

for-in

 let arr=[2,4,6,10];
    let index;
    for (index in arr){
        console.log(arr[index]);
    }    
    	 //arr[0]=2
    	 //arr[1]=4
    	 //arr[2]=6
    	 //arr[3]=10

let per={
        name:"zhang San",
        sex:'male',
        age:18
    };
    for(let key in per){
        console.log("per[" + key + "]=" + per[key]);
    }
          //per[name]=zhang San
		  //per[sex]=male
		  //per[age]=18

for-in不仅可以遍历数组还可以遍历对象。
for-in在遍历的时候,它不仅遍历了对象上的属性,而且还遍历了对象父类原型上的属性。所以for-in并不适合遍历Array中的元素,更适合遍历对象中的属性,这也是创造for-in的初衷。但是对于稀疏数组,使用它却是极好的。

let key;
let arr = [];
arr[0] = "a";
arr[999] = "b";
arr[99999] = "c";
for(key in arr) {
	if(arr.hasOwnProperty(key)  && /^0$|^[1-9]\d*$/.test(key) && key <= 100000) {
        console.log(arr[key]);
    }
}

除非明确要迭代一个属性数量未知的对象,否则应该避免使用for-in。

JavaScript遍历数组有多种方法。其中常用的方法包括forEach、map、for循环、for of、for in、filter和find。 1. 使用forEach方法进行遍历。forEach方法接受一个回调函数作为参数,该函数在遍历数组的每个元素时被调用。可以使用item参数来访问当前遍历到的元素,使用index参数来访问元素的索引,使用self参数来访问数组本身。例如: arr.forEach(function(item, index, self) { console.log(item); }); 这段代码会打印出数组arr中的每个元素。 2. 使用map方法进行遍历和映射。map方法也接受一个回调函数作为参数,该函数在遍历数组的每个元素时被调用,并返回一个新的数组。可以使用item参数来访问当前遍历到的元素。例如: let newArr = arr.map(item => { return item * 2; }); 这段代码会将数组arr中每个元素都乘以2,并将结果保存在新数组newArr中。 3. 使用for循环进行遍历。可以使用临时变量将数组的长度缓存起来,以避免重复获取数组长度。例如: for (var i = 0; i < arr.length; i++) { console.log(arr[i]); } 这段代码会按顺序遍历数组arr中的每个元素,并打印出来。 4. 使用for of循环进行遍历。for of循环可以直接遍历数组中的每个元素。例如: for (var item of arr) { console.log(item); } 这段代码会按顺序遍历数组arr中的每个元素,并打印出来。 5. 使用for in循环进行遍历。for in循环遍历的是数组的索引,而不是数组的值。例如: for (var index in arr) { console.log(arr[index]); } 这段代码会按顺序遍历数组arr中的每个元素,并打印出来。 6. 使用filter方法进行遍历和筛选。filter方法也接受一个回调函数作为参数,该函数在遍历数组的每个元素时被调用,并返回一个满足某个条件的新数组。例如: let newArr = arr.filter(item => { return item < 3; }); 这段代码会返回一个新数组newArr,其中包含数组arr中小于3的元素。 7. 使用find方法进行遍历。find方法也接受一个回调函数作为参数,该函数在遍历数组的每个元素时被调用,直到找到满足某个条件的元素为止。例如: let result = arr.find(item => { return item === 3; }); 这段代码会返回数组arr中第一个等于3的元素。 以上是JavaScript中常用的几种遍历数组的方法。根据实际需求选择合适的方法来进行遍历。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JS遍历数组的十五种方法](https://blog.csdn.net/weixin_39987434/article/details/130869691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗳华裳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值