数组重构-Map
2023-12-13 08:39:15
/*
map : 不改变原数组,返回一个新数组,新数组的长度与云数组长度相等
于forEach相比,就是放回一个新数组,是一个用来记录回调函数对原数组的操作后的映射数组
*/
let arrMap = [{a:2},2,3 ,4,5,6,7,8,{a:1}]
function arrayMap(arr , func){
if(!arr || arr.constructor !== Array) throw new TypeError(arr + 'is not an Array')
if(!func || typeof func !== 'functio') throw new TypeError(func + 'is not a functio')
let newArray = []
for(let i =0; i< arr.length ;i++){
if(i in arr) newArray[i] = fn(arr[i] , i , arr)
}
return newArray
}
/*
Object.assign({} , itm) 对象的复制,第一个元素是定义的新对象,第二个元素开始是要复制的对象
新旧对象最外层的引用地址是不相同的,但是内层的引用地址相同
*/
// 数组的复制
let arr1 = Object.assign([] , arrMap)
let arr2 = arrMap.slice()
let arr3 = arrMap.concat()
// arr1[0].a = 10 // 以上都是浅复制引用类型的元素,任意一个修改其他的也都跟着改
let arr4 = arrMap.map((itm) => {
return Object.assign({} , itm)
})
arr1[0].a = 10
console.log(arrMap,arr4,'arr4的值不受影响' , '28' , arr1)
// map一般涌来对整个数组映射,过滤不太好使
let arr5= arrMap.map((itm) => {
if(itm === 3) return itm
})
console.log(arr5) //[undefined, undefined, 3, undefined, undefined, undefined, undefined, undefined, undefined] 在map中,对应每次元素执行func操作的时候,不满足的不返回,这样默认返回undefined
// 返回的新数组的长度一定等于元素组的
文章来源:https://blog.csdn.net/yingzi0001/article/details/134962580
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!