二.forEach与map的区别

文章比较了JavaScript中forEach和map方法在遍历数组时的相似点(如参数和this指向),并重点阐述了它们在处理基本类型和引用类型数组时的区别,包括是否改变原数组和返回值的不同。
摘要由CSDN通过智能技术生成

1.相同点

1)都是循环遍历数组中的每一项;

2)匿名函数中的this都是指向window;

3)每次执行匿名函数时都有三个参数:item(当前项)、index(数组)、arr(原数组)

2.区别

1)forEach没有返回值,map有返回值

2)如果数组元素是基本类型,forEach会改变原数组,map不会改变原数组;如果数组元素是引用类型,则都会改变原数组

基本数据类型:

let arr = [ 1,2,3,4]
let arr1 = arr.map((item)=>{
  return item * 2
})
console.log('基本数据类型 map:',arr, arr1)

//输出:"基本数据类型 map:", [1, 2, 3, 4], [2, 4, 6, 8]
//输出可见:map不改变原数组,会返回一个新数组
let arr = [ 1,2,3,4]
let arr1 = arr.forEach((item)=>{
item = item * 2
})
console.log('基本数据类型 forEach:',arr, arr1)

//输出:"基本数据类型 forEach:", [1, 2, 3, 4], undefined
//输出可见:forEach不会改变原数组,不会返回新数组

引用数据类型:

let arr = [
{ name: 'Yulia', age: 26 },
{ name: 'Claude', age: 30 },
]
let arr1 = arr.map((item)=>{
item.age = 1
return item
})
console.log('引用数据类型 map 原数组', arr)
console.log('引用数据类型 map 返回数据', arr1)

//输出: 
//"引用数据类型 map 原数组", [{ age: 1, name: "Yulia" }, { age: 1, name: "Claude" }]
//输出:
//"引用数据类型 map 返回数据", [{ age: 1, name: "Yulia" }, { age: 1, name: "Claude" }]

//输出可见:引用类型map会改变原数组,也会返回一个新数组
//不改变原数组的情况下返回新数组:
let list = [
{ name: 'Yulia', age: 26 },
{ name: 'Claude', age: 30 },
]
let list2 = list.map((item)=>{
return { ...item, age: 2 }
})
console.log('引用数据类型 map 原数组', list)
console.log('引用数据类型 map 返回数据', list2)

//输出: 
//"引用数据类型 map 原数组", [{ age: 26, name: "Yulia" }, { age: 30, name: "Claude" }]
//输出:
//"引用数据类型 map 返回数据", [{ age: 2, name: "Yulia" }, { age: 2, name: "Claude" }]
let arr = [
{ name: 'Yulia', age: 26 },
{ name: 'Claude', age: 30 },
]
let arr1 = arr.forEach((item)=>{
    item = {...item, age: 3}
})
console.log('引用数据类型 map 原数组', arr)
console.log('引用数据类型 map 返回数据', arr1)

//输出: 
//"引用数据类型 forEach 原数组", [{ age: 26, name: "Yulia" }, { age: 30, name: "Claude" }]
//输出:
//"引用数据类型 forEach 返回数据", undefined

//输出可见:引用类型forEach修改整个对象不会改变原数组,不会返回任何数据
//改变原数组的情况:修改对象中的某个属性
let list = [
{ name: 'Yulia', age: 26 },
{ name: 'Claude', age: 30 },
]
let list2 = list.forEach((item)=>{
    item.age = 3
})
console.log('引用数据类型 forEach 原数组', list)
console.log('引用数据类型 forEach 返回数据', list2)

//输出: 
//"引用数据类型 forEach 原数组", [{ age: 3, name: "Yulia" }, { age: 3, name: "Claude" }]
//输出:
//"引用数据类型 forEach 返回数据", undefined

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值