js中常用的遍历方法以及区别

本文详细介绍了JavaScript中常用的数组操作方法,包括forEach、map、filter、some、every、reduce等的功能及用法,并对比了for...in与for...of循环的区别。

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

forEach

第一个我们来说一下最常见的快被我们用烂了的forEach()

let arr = ['l', 'x', 'k'];
arr.forEach(item => {
    console.log(item);
})

对于forEach()方法本身是不支持continue和break语句的,使用break不能中断循环 ,return不能返回到外层函数。

let arr = ['l', 'x', 'k'];
arr.forEach(item => {
    if (item === 's') break;
    console.log(item);
})

使用break会报错,非法语句。

map

map()方法定义在js的Array中,他返回的是一个新的数组,数组中的元素为原始数组调用函数处理后的值。

//给数组的每一个元素加1,组成新数组
var arr = [1,2,3,4,5,6,7];
var newarr=arr.map(function (num) {
    return num+1;
})
filter

filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

//输出大于5的数,组成新数组
var arr = [1,2,3,4,5,6,7];
var newarr = arr.filter(function(num){
   reture num>5?num:''
});
some

some()方法用于检测数组中的元素是否满足指定条件。some()方法会执行数组的每一个元素,如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。入股没有满足条件的元素,则返回false。

let arr = ['l', 'x', 'k'];
let arr2 = arr.some(item => item === 'l')
console.log(arr2);
every

every()方法用于检测数组所有元素是否都符合指定条件。every()方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。如果所有的元素都满足条件,则返回true。

let arr = ['l', 'x', 'k'];
let arr2 = arr.every(item => item === 's')
console.log(arr2);
reduce

reduce()方法接受一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

arr.reduce((prev,cur,index,arr)=>{

},init)
//arr:表示将要作用的原数组
//prev:表示上一次调用回调时的返回值,或者初始值init
//cur:表示正在处理的数组匀速的索引
//若提供init值 ,则索引为0,否则为1.
//init:表示初始值

我们经常用来数组求和:

const arr = [1,2,3,4,5,6,7]
const sum = arr.reduce((pre,cur)=>{
return pre +cur
})
console.log(sum)//28

const arr = [1,2,3,4,5,6,7]
const sum = arr.reduce((pre,cur)=>{
return pre +cur
},2)
console.log(sum)//30
for…in 和for…of

重点来了!!!
我们经常用到for in和for of,但是他们两个有什么区别呢?

  1. 循环数组
    区别:for in和for of都可以循环数组,for in输出的是数组的下标,而for of输出的是数组的每一项的值。
const arr = [1,2,3,4]
 
// for ... in
for (const key in arr){
    console.log(key) // 输出 0,1,2,3
    }
 
// for ... of
for (const key of arr){
    console.log(key) // 输出 1,2,3,4
    }

2.循环对象
区别:for in 可以遍历对象,for of 不能遍历对象,只能遍历带有iterator接口的,例如Set,Map,String,Array。


const object = { name: 'lxk', age: 18 }
    // for ... in
    for (const key in object) {
      console.log(key) // 输出 name,age
      console.log(object[key]) // 输出 lx,23
    }
 
    // for ... of
    for (const key of object) {
      console.log(key) // 报错 Uncaught TypeError: object is not iterable
    }

所以我们可以看出来,for in就是专门用来遍历对象的,for of可以用来遍历数组、字符串、数组对象、map、set等拥有迭代器的集合,但是不能遍历对象,因为对象没有迭代器。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值