Vue中map()方法的使用

Vue中map()方法的使用

原创:丶无殇  2023-06-25


map函数常被用于修改数据格式

给map传入一个回调函数,map就会遍历数组元素,将相关信息一起传入回调函数,并取这个回调函数的返回值作为新数组的对应索引的元素,并将这个新数组返回

回调函数每次可以获取三个参数:数值索引本身:(value,index,array)

数组转换

转换对象

接收数据:

["2022-12-25","2022-12-28","2022-12-31"]

想转换成:

{date:"2022-12-25",id:0}
{date:"2022-12-28",id:1}
{date:"2022-12-31",id:2}

代码如下:

var getdata=["2022-12-25","2022-12-28","2022-12-31"];
var output=getdata.map((item,index)=>{
	let json={}
	json.date=item
	json.id=index
	return json
})
console.log(output);

转换数组

接收数据:

[
	[36, '12', 5],
	[50, '1G', 10],
	[64, '1W', 20],
]

只想要其中一列的数据:

['12','1G','1W']

代码如下:

var mapping = [
	[36, '12', 5],
	[50, '1G', 10],
	[64, '1W', 20],
]
var tempmapping = mapping.map((item) => (item[1]))
console.log(tempmapping);

对象转换

接收数据:

{ id: 1, name: "张三", sex: "男", age: 20 },
{ id: 2, name: "李四", sex: "女", age: 30 },
{ id: 3, name: "王五", sex: "男", age: 40 },

添加字段

想添加一列list成:

{id: 1, name: '张三', sex: '男', age: 20, list: 0}
{id: 2, name: '李四', sex: '女', age: 30, list: 1}
{id: 3, name: '王五', sex: '男', age: 40, list: 2}

代码如下:

var getdata = [
	{ id: 1, name: "张三", sex: "男", age: 20 },
	{ id: 2, name: "李四", sex: "女", age: 30 },
	{ id: 3, name: "王五", sex: "男", age: 40 },
];
var output=getdata.map((item) => {
	item.list=item.id-1
	return item
})
console.log(output);

获取字段组成新租

只想要name字段组成新组的代码:

var getdata = [
	{ id: 1, name: "张三", sex: "男", age: 20 },
	{ id: 2, name: "李四", sex: "女", age: 30 },
	{ id: 3, name: "王五", sex: "男", age: 40 },
];
var output=getdata.map((item) => item.name)
console.log(output);
// 输出:['张三', '李四', '王五']

重命名某字段组成新组

比如将name重命名为newname

var getdata = [
	{ id: 1, name: "张三", sex: "男", age: 20 },
	{ id: 2, name: "李四", sex: "女", age: 30 },
	{ id: 3, name: "王五", sex: "男", age: 40 },
];
var output=getdata.map((item) => ({newname:item.name}))
console.log(output);
// 输出:[{newname: '张三'},{newname: '李四'},{newname: '王五'}]

多个字段也是一样:

var getdata = [
	{ id: 1, name: "张三", sex: "男", age: 20 },
	{ id: 2, name: "李四", sex: "女", age: 30 },
	{ id: 3, name: "王五", sex: "男", age: 40 },
];
var output=getdata.map((item) => ({newname:item.name,newid:item.id}))
console.log(output);
// 输出:[{newname: '张三'},{newname: '李四'},{newname: '王五'}]

如有新的内容,以后将进行补充。

### Vue3 中使用 `map` 进行循环 在 Vue3 中,`map` 是一种强大的工具用于转换数组中的每一个元素并返回一个新的数组。这非常适合于创建基于现有数据的新列表或对象集合。 #### 基本语法 `array.map()` 接受一个回调函数作为参数,该回调函数会为原始数组中的每个元素执行一次,并构建由这些调用的结果组成的新数组[^2]。 ```javascript const newArray = array.map((currentValue, index, array) => { // 返回新值来构成新的数组 }); ``` #### 实际应用场景 假设有一个包含多个用户信息的对象数组,在模板渲染之前可能需要对某些字段做特定处理: ```html <template> <ul> <!-- 渲染经过映射后的用户名 --> <li v-for="(name, idx) in formattedNames" :key="idx">{{ name }}</li> </ul> </template> <script setup> import { ref } from 'vue'; // 定义初始的数据集 const users = [ { id: 1, firstName: "John", lastName: "Doe" }, { id: 2, firstName: "Jane", lastName: "Smith" } ]; // 使用 map 对名字进行格式化 const formattedNames = ref(users.map(user => `${user.firstName} ${user.lastName}`)); console.log(formattedNames.value); // ["John Doe", "Jane Smith"] </script> ``` 在这个例子中,通过 `map` 将用户的全名提取出来形成一个新的字符串数组,然后利用 `v-for` 指令将其展示在一个无序列表里[^1]。 #### 处理更复杂的情况 当面对更加复杂的业务逻辑时,比如不仅限于简单的属性组合而是涉及到更多计算或是异步操作的时候,可以在组件的方法内定义更为详细的映射过程: ```javascript methods: { async fetchUserDetails() { const detailedUsers = await Promise.all( this.users.map(async user => ({ ...user, fullName: `${user.firstName} ${user.lastName}`, avatarUrl: await getUserAvatarById(user.id), })) ); return detailedUsers; } } ``` 上述代码展示了如何结合 `Promise.all` 和 `async/await` 来并发获取额外的信息(如头像URL),并将它们附加到原有对象上再返回给视图层[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值