forEach能不能改变原数组?sort()如何排序?

本文探讨了JavaScript中数组的forEach方法在处理基本数据类型和引用数据类型时的行为。对于基本数据类型,forEach不能直接改变原数组,而引用数据类型则可以修改其属性。在需要改变数组元素时,建议使用map方法。此外,还介绍了sort方法用于数组排序,可以自定义比较函数实现升序或降序排列。总结来说,理解这些方法在不同情况下的行为对于优化JavaScript代码至关重要。
摘要由CSDN通过智能技术生成

forEach能不能改变原数组?

const arr = [1,2,3,5,4];
let arr2 = [{name:'小米2',age:22},{name:'小米1',age:11},{name:'小米3',age:33}]

1.如果数组元素是基本数据类型,则无法改变原数组

arr.forEach((item,index,arr)=>{
    //item = item*2 // 不可行,[1,2,3,5,4]
    arr[index] = item*2 // 可行,[2,4,6,10,8]
})
console.log(JSON.stringify(arr))

2.如果数组元素是引用数据类型,直接修改整个元素,无法改变

arr2.forEach((item,index,arr)=>{
    // item = {name:'小米4',age:44} // 不可行,[{"name":"小米2","age":22},{"name":"小米1","age":11},{"name":"小米3","age":33}]
    // arr[index].age = item.age*2 // 可行,[{"name":"小米2","age":44},{"name":"小米1","age":22},{"name":"小米3","age":66}]
    item.age = item.age*2 // 可行,[{"name":"小米2","age":44},{"name":"小米1","age":22},{"name":"小米3","age":66}]
})
console.log(JSON.stringify(arr2))

结论:
如果纯粹只是遍历数组,可以用forEach()方法
但是,如果你想在遍历数组的同时,去改变数组里的元素内容。那么,最好是用map()方法来做,不要用forEach()方法,避免出现一些低级错误。

sort排序

用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。

arr.sort((a,b)=>a-b)
console.log(JSON.stringify(arr)) // [1,2,3,4,5]
arr2.sort((a,b)=>a.age-b.age)
console.log(JSON.stringify(arr2)) // [{"name":"小米1","age":11},{"name":"小米2","age":22},{"name":"小米3","age":33}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值