map
定义和用法
定义:返回一个新数组,对数组的原始数据进行处理,不会改变原数组
注意:不会对空数组进行检测,有返回值
let arrs=[22,10,30]
let arr2= arrs.map((it)=>{
return it/10
})
console.log(arr2) //[2.2,1,3]
console.log(arrs) //[22,10,30]
若 return 只有一行代码,可以进行简写
let arrs = [22, 10, 30]
let arr2 = arrs.map((it) => it / 10)
正因为 map返回的是新数组,可以后进行链式数组的方法操作
let arrs = [22, 10, 30]
let arr2 = arrs.map((it) => it / 10).filter((it)=>it>1)
console.log(arrs) //[22, 10, 30]
console.log(arr2) //[2.2,3]
forEach
定义和用法
定义:用于调用数组的每个元素,并将元素传递给回调函数,不会改变原数组
注意:对于空数组是不会执行回调函数的,没有返回值
let arr = [1, 2, 4]
let newArr = []
let arr1 = arr.forEach((item) => { //无返回值,返回值是undefined
newArr.push(item * 10)
})
console.log(newArr) // [10,20,40]
console.log(arr1) // undefined
没有返回值,所以就没有链式方法处理
let arr = ['10', '9', '8'];
let result = arr.forEach(((value, index, array) => {
return value*2
}))
即使在forEach里面写return 不会对原数组产生印象
console.log('返回值',result); // 返回值 undefined
console.log('原数组',arr); // 原数组 [ '10', '9', '8' ]
两者主要的区别
1、map速度比forEach快
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,forEach返回undefined
3、map因为返回数组所以可以链式操作,forEach不能
4, map里可以用return(return的是什么,相当于把数组中的这一项变为什么(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了) ,而forEach里用return不起作用,forEach不能用break,会直接报错
小伙伴们,我我这边的话写的都简单,主要是方便新手,小白们,更容易看懂,没有大佬们那种源码级别,那种,望理解