javascript - 用 map() 变换对象数组
问题描述
我无法理解 map () 方法是如何工作的,因为所有示例都带有数字,并且要理解我需要一个更具体的示例。所以我做了这个我有一个对象数组:
let people = [
{
id: 1,
name: 'jhon',
last_name: 'wilson'
},
{
id: 2,
name: 'maria',
last_name: 'anyway'
},
{
id: 3,
name: 'lastOne',
last_name: 'example'
}
];
我想了解如何people.map();
更改 idk、名称?的第二个元素。
这就是我认为的map()
工作方式:
people.map(() => {
people[1].name = prompt()
// At this point i don't know how continue
})
我正在自学,所以我会非常感谢你:)
解决方案
该.map()
函数将遍历整个数组,并且在该过程的每个步骤中,它将获取我们正在查看的当前项目并将其作为参数传递给函数。然后,您可以对该项目执行任何操作,并且从函数返回的任何内容都将替换数组中该位置的内容。
例如,对于您在问题中提供的数组,我们想删除name
andlast_name
属性,并将它们组合成一个full_name
属性。我们可以做到以下几点:
let people = [
{
id: 1,
name: 'jhon',
last_name: 'wilson'
},
{
id: 2,
name: 'maria',
last_name: 'anyway'
},
id: 3,
name: 'lastOne',
last_name: 'example'
}
];
people = people.map((person) => {
return {
id: person.id,
full_name: `${person.name} ${person.last_name}`
}
});
这段代码运行后,我们的people
数组将如下所示:
[
{
id: 1,
full_name: 'jhon wilson'
},
{
id: 2,
full_name: 'maria anyway'
},
id: 3,
name: 'lastOne example'
}
];
您可以将其视为与此非常相似的事情:
function transformPerson(person) {
return {
id: person.id,
full_name: `${person.name} ${person.last_name}`
}
}
let newPeople = [];
for (let i = 0; i < people.length; i++) {
newPeople[i] = transformPerson(people[i])
}
people = newPeople;
推荐阅读
- vba - 在整个文档中进行选择
- javascript - 未定义的window.web3
- html - CSS div 超出页面限制,添加水平滚动条
- css - IE中网格的特征查询
- javascript - 为什么在循环中声明变量后输出错误?- (错误问题:如何在递归方法中使用 Promises 来声明变量?)
- python - TypeError: translate() 只需要 1 个参数(给定 2 个)Python
- inno-setup - 在 Inno Setup 中创建使用命令行参数执行程序的快捷方式
- java - 我可以将什么定位器用于带有按钮标记名的 span 元素
- c++ - 在哪里放置我的功能?进入我的母语 Gui 还是进入我的主持人?
- html - 浏览器实际上如何检测 HTML 页面编码?