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()方法则会改变原数组