美文网首页js css html奇思妙想Vue
js中map()方法是否改变原数组

js中map()方法是否改变原数组

作者: 幽小鬼 | 来源:发表于2022-01-18 16:40 被阅读0次

先说结论:当数组元素是基本数据类型时,map()方法不会改变原数组;当数组元素是引用类型时,map()方法会改变原数组。

定义和用法

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。

发现问题

数组元素为基本数据类型时使用map()方法:

// 基本数据类型
const arr = [1, 2, 3]
const newArr = arr.map(item =>  item * 2)
console.log(arr) // [ 1, 2, 3 ]
console.log(newArr) // [ 2, 4, 6 ]

数组元素为引用数据类型时使用map()方法:

// 基本数据类型
const arr = [{
    name: 'a'
}, {
    name: 'b'
}, {
    name: 'c'
}]
const newArr = arr.map(item => {
    item.age = 10
    return item
})
console.log(arr)
// [ { name: 'a', age: 10 }, { name: 'b', age: 10 }, { name: 'c', age: 10 } ]
console.log(newArr)
// [ { name: 'a', age: 10 }, { name: 'b', age: 10 }, { name: 'c', age: 10 } ]

可以看到数组元素为对象时使用map()方法后原数组也跟着变化了,原因是因为基本类型传值是复制,引用类型传值是引用

解决方法

比如数组元素为对象时map()方法中处理函数就返回一个新的对象:

const arr = [{
    name: 'a'
}, {
    name: 'b'
}, {
    name: 'c'
}]
const newArr = arr.map(item => {
    return {
        ...item,
        age: 10
    }
})
console.log(arr)
// [ { name: 'a' }, { name: 'b' }, { name: 'c' } ]
console.log(newArr)
// [ { name: 'a', age: 10 }, { name: 'b', age: 10 }, { name: 'c', age: 10 } ]

相关文章

  • js中map()方法是否改变原数组

    先说结论:当数组元素是基本数据类型时,map()方法不会改变原数组;当数组元素是引用类型时,map()方法会改变原...

  • 前端学习大纲-基础篇

    js基础 数组操作哪些会改变原数组(pop、splice、reverse等等)哪些不会改变原数组(map、redu...

  • 数组

    不会改变原数组的方法: map reduce filter apply 会改变原数组值的方法 sort rever...

  • map

    js中的map()方法 map定义和方法 map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后...

  • js中map/reduce/filter

    map() map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。 map() 方法按照原...

  • 数组(Array)<迭代器>

    一、Js数组迭代器方法 主要介绍js数组中的forEach,every,some,filter,map迭代器方法 ...

  • js 数组操作探究

    有空闲时间了, 深入的研究一下js 中的数组方法 js中的数组方法 首先是会改变原数组的方法: shift un...

  • js字符串和数组的方法

    未完待续 1 js中数组的方法哪些能改变原数组?(7种) Reverse(),sort() ----颠倒顺序、排序...

  • 前端面试题套路--补充版

    Javascript 基础: 1.js中数组常见的方法: 1.push()末尾添加,返回长度,改变原数组push(...

  • 00006.js 数组方(全)

    通用规则: 方法名:是否改变原数组

网友评论

    本文标题:js中map()方法是否改变原数组

    本文链接:https://www.haomeiwen.com/subject/vzbkhrtx.html