<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script>
let users=[
{name:"hxj",age:30},
{name:"ydc",age:28},
{name:"hwx",age:34},
];
let newUser=users.map(function(item,index,arr){
//return 1; // [1, 1, 1] 返回什么新数组就接什么
//return `名字简称${item.name}`;
return item.age++;
});
console.log(newUser); //["名字简称hxj", "名字简称ydc", "名字简称hwx"]
console.log(users);//原数组元素age都增了1,因为原数组元素是引用类型
//注意使用arr.map(fucntion(item,index,arr){});时
//如果数组元素是引用类型,通过map方法可以改变数组的元素,
//也就是说元素是引用类型的使用map方法不用再定义变量接收返回值,直接就会改变数组值
//如果数组元素是基本类型,通过map方法无法改变原数组内的元素,需要有个变量来接收返回值
//这个原理和for-of forEach()一样
let a=[1,2,3,4,5];
let newa=a.map(function(item){
return item++;
});
console.log(a);//[1, 2, 3, 4, 5]
//如果数组元素是对象类型,但是
//我不想改变原数组的元素值,就想返回一个经过处理的结果
let users0=[
{name:"hxj",age:30},
{name:"ydc",age:28},
{name:"hwx",age:34},
];
let newuser0 =users0.map(function(item){
return{
name:item.name,
age:item.age,
job:"teacher"
};
});
console.table(users0);//原数组不发生变化
console.table(newuser0);//新数组是经过处理的
</script>
</html>
网友评论