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


JavaScript Array map() 方法

定义和用法

map() 方法使用为每个数组元素调用函数的结果创建新数组。
map() 方法按顺序为数组中的每个元素调用一次提供的函数。
注释:map() 对没有值的数组元素不执行函数。
注释:map() 不会改变原始数组。
摘自w3school 文档

测试

基础数据类型

const numbers = [65, 44, 12, 4];
numbers.map(item => {
	item += 10;
});
console.log(numbers); // 输出结果: [65, 44, 12, 4] // map()方法没有改变原数组

引用数据类型

const friends = [
	{
    	name: '楠竹',
        sex: 'girl',
        url: 'https://leisuping.github.io/MyBlog/'
    },
    {
    	name: 'Alisa',
        sex: 'girl',
        url: 'https://leisuping.github.io/MyBlog/'
    },
    {
    	name: 'jason',
        sex: 'girl',
        url: 'https://leisuping.github.io/MyBlog/'
    },
];
friends.map(item => {
	if (item.name === '楠竹') {
    	item.name = '楠竹菇凉';
    }
    if (item.name === 'jason') {
    	item.sex = 'boy';
    }
});
console.log(friends); // 结果如下 // map()方法改变了原数组

基本数据类型的值存放在栈内存(Stack)里,是按值访问的。而引用类型的值保存在堆内存(Heap)中的,是按引用访问的。详情参见🔎JavaScript 深入了解基本类型和引用类型的值

总结

综上所述,数组的map()方法是否会改变原数组取决于原数组中的值。
如果数组中是基础数据类型,map()方法不会改变原数组
如果数组中是引用数据类型,map()方法则会改变原数组


文章作者: nzgl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 nzgl !
评论
  目录