js中的几种遍历方法
1.for循环
1.基础版
for (var i = 0; i < arr.length; i++) {
}
2.优化版
for(var i = 0, len = arr.length; i < len; i++) {
}
使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。
这种方法基本上是所有循环遍历方法中性能最高的一种,
并且这一类型的for循环可以通过用中断语句(break、continue、return)来中断循环,
3.增强for循环
2. arr.foreach
遍历数组中的每一项,没有返回值,对原数组没有影响.
当forEach操作基本数据类型的时候,并不会改变原数组中的值。而当forEach操作引用数据类型的时候,才会改变原数组中的值。
数组本身也是引用数据类型,所以我们要用forEach来修改基本数据类型的时候,可以通过引用访问的方式来对元素进行修改。
不能通过中断语句来终止循环。
arr = ['a', 'b', 'c', 'd']
arr.forEach((item, index, array) => {
console.log(item); 每一项的内容
console.log(index);每一项内容下下标
console.log(array);原始的数据
});
let arr = [1, 2, 3, 4]
arr.forEach((item, index) => {
arr[index] = 0
})
console.log(arr) // [0, 0, 0, 0]
3. arr.map
和arr.foreach类似。有返回值,可以return出来
map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥
(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);
arr2=arr.map((item, index, array) => {
return item = 2 * item
});
console.log(arr2);
//arr2的内容会基于return的语句赋值给新的数组中的每一项
//arr2相当于在arr每一项的基础上*2
map和foreach区别::
1.forEach()方法不会返回执行结果,而是undefined。也就是说,forEach()会修改原来的数组。
map()方法会得到一个新的数组并返回。
2.forEach()的执行速度 < map()的执行速度
4.for···of
允许遍历获得键值(value),对于普通对象,没有部署原生的 iterator 接口,直接使用 for...of 会报错;
for...of 循环可以与break、continue 和 return 配合使用,跳出循环
循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象
arr2 = ['a', 'b', 'c', 'd']
for (let ietm of arr2) {
console.log(ietm);
}
//输出 a,b,c,d
5.for····in····
可以使用 for...in 循环遍历键名
for...in 循环不仅遍历数字键名,还会遍历手动添加的其它键,甚至包括原型链上的键。for...of 则不会这样
循环主要是为了遍历对象而生,不适用于遍历数组
arr2 = ['a', 'b', 'c', 'd']
for (let item in arr2) {
console.log(item);
}
//遍历得到字符串类型的键 0,1,2,3
arr2 = {
am: 'a',
bm: 'b',
cm: 'c'
}
for (let item in arr2) {
console.log(item);
}
//遍历得到键名 am,bm,cm
6.filter
不会改变原始数组,返回新数组,用于对之前数组的过滤和筛选
var arr = [1, 2, 3];
const arr2=arr.filter(item => { // item为数组当前的元素
return item > 1; // [2, 3]
})
map和filter的区别:
- 相同点:filter 和 map 都是对数组的操作,均返回一个新的数组
- 不同点:filter是满足条件的留下,是对原数组的过滤;map则是对原数组的加工,映射成一一映射的新数组
7.somo() 和every()
every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。(全部满足才返回true)
every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。(一个满足就返回true)
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log( arr.every( function( item, index, array ){
return item > 3;
}));
false
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log( arr.some( function( item, index, array ){
return item > 3;
}));
true
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)