js数组遍历方法总结
发布日期:2021-05-10 03:42:33 浏览次数:21 分类:精选文章

本文共 2580 字,大约阅读时间需要 8 分钟。

js数组遍历方法总结

1、for循环

使用临时变量存储数组长度,避免频繁调用数组长度属性更高效。此方法适合处理较大数组时节省性能资源。

for (j = 0, len = arr.length; j < len; j++) {
}

2、foreach循环

遍历数组元素,不返回值,不影响原数组,方法不支持IE浏览器。适用于简单逐项操作。

arr.forEach((item, index, array) => {
});

参数说明:value数组元素,index当前元素索引,array原数组。支持将业务逻辑放在匿名函数内。

3、map循环

与for循环类似,但支持return值操作,返回的值会被用于新生成的数组中。新数组不影响原数组内容。

var ary = [12, 23, 24, 42, 1];
var res = ary.map(function (item, index, array) {
return item * 10;
});

原数组保存为[12, 23, 24, 42, 1],新数组result保存为[120, 230, 240, 420, 10]。

4、for...of遍历

适合处理能响应break、continue、return语句的情景,用于遍历数组元素。属于ES6新特性。

for (var value of myArray) {
console.log(value);
}

5、filter遍历

返回一个新的数组,包含满足条件的元素。方法不会修改原数组内容。适用于筛选操作。例如,筛选完成的任务。

var arr = [
{id: 1, text: 'aa', done: true},
{id: 2, text: 'bb', done: false}
];
var newarr = arr.filter(item => item.done);
console.log(newarr, arr);

等价ES5写法:

arr.filter(function (item) {
return item.done;
});

根据条件过滤出符合需求的新数组。

6、every遍历

静态方法,判断数组中所有元素是否都满足条件。第一次找到不符合条件的元素则返回false,符合全部条件则返回true。

var arr = [1, 2, 3, 4, 5, 6];
console.log(arr.every(function (item, index, array) {
return item > 3;
}));

结果:false,说明数组中存在不大于3的元素

7、some遍历

方法检查数组中是否存在至少一个元素满足条件,找到符合条件的即返回true,否则返回false。

var arr = [1, 2, 3, 4, 5, 6];
console.log(arr.some(function (item, index, array) {
return item > 3;
}));

结果:true,表示数组中存在大于3的元素

8、reduce遍历

将数组中的所有元素通过回调处理函数累积,返回一个单一值。可以使用初始值来控制累加的初始状态。

var total = [0, 1, 2, 3, 4].reduce((a, b) => a + b);

如果提供初始值:

[0, 1, 2, 3, 4].reduce((a, b) => a + b, 5);

第一个参数是前一个累积值,第二个参数是当前元素值,第三个是索引,第四个是数组。初始值可以影响第一次调用回调时的参数值。

9、reduceRight遍历

从数组右侧开始逐步累加,方法表示为reduceRight。与reduce类似,但方向相反。省事的话可以直接使用reduce

var arr = [0, 1, 2, 3, 4];
console.log(arr.reduceRight((a, b) => a + b));

比如计算数组和可以使用reduceRight:

console.log([1,2,3,4,5].reduceRight((a, b) => a + b, 0));

10、find查找

返回数组中第一个满足Condition的元素,条件为函数返回true。如果不满足条件则返回undefined

var stu = [ {name:'张三', gender:'男', age:20}, {name:'王小毛', gender:'男', age:20}, {name:'李四', gender:'男', age:20}, ]; function getStu(element) { return element.name == '李四'; } var result = stu.find(getStu); //= {name: '李四', ...}

ES6写法:

stu.find((element) => element.name == '李四');

11、findIndex查找

返回数组中符合条件的第一个元素的索引值。默认情况下,如果条件不满足则返回-1

[1,2,3].findIndex(x => x == 2); // 返回1
[1,2,3].findIndex(x => x == 4); // 返回-1

12、数组遍历新方法——keys、values、entries

ES6新增方法,用于数组的高级遍历。keys返回索引,values返回元素,entries返回元素和索引的数组

const arr = ['a','b'];
for (const index of arr.keys()) {
console.log('索引:', index);
}
for (const elem of arr.values()) {
console.log('元素:', elem);
}
for (const [index, elem] of arr.entries()) {
console.log('索引-元素:', index, elem);
}
上一篇:JS数组遍历的几种方式
下一篇:微信小程序sort时间排序

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月06日 14时34分32秒