map()为操作数组的一种方法,官方文档显示:
-
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
-
map() 方法按照原始数组元素顺序依次处理元素。
-
注意: map() 不会对空数组进行检测。
-
注意: map() 不会改变原始数组。
官方文档中的说法并非十分准确,在实际的开发中需要依据不同的数据做不同的处理。
当数组为基础类型时原数组不变:
let array=[1,2,4,6]
let newArray=array.map((item) => item*2)
console.log(array); // [1,2,4,6]
console.log(newArray);//[2, 4, 8, 12]
当数组为引用类型时原数组发生改变:
let array = [{ name: 'Anna'}, { name: 'James'}]
let newArray=array.map((item) => {
item.like='eat';
return item;
})
console.log(array); // [{ name: 'Anna', like: "eat"},{ name: 'James', like: "eat"}]
console.log(newArray);//[{ name: 'Anna', like: "eat"},{ name: 'James',like: "eat"}]
避免原数组发生改变:
let array = [{ name: 'Anna'}, { name: 'James'}]
let newArray=array.map((item) => {
const obj = { ...item, like:'eat'};
return obj;
})
console.log(array); // [{ name: 'Anna'},{ name: 'James'}]
console.log(newArray);//[{ name: 'Anna', like: "eat"},{ name: 'James', like: "eat"}]