我有一个人阵。 person对象具有名称和年龄的字段。我想复制person数组并向person对象数组添加一个新字段(country)。 country字段来自一系列字符串。因此,新数组的对象字段将具有名称,年龄和国家/地区的字段。这是我的傻瓜https://plnkr.co/edit/chBRHn0FCGNT6Ts15fAz?p=preview
`export class App {
index: number =0;
countries: string [] = ['US', 'UK'];
constructor() {
this.persons = [
{'name':'Marvin','age': 12},
{'name':'Carla','age': 15}
];
this.newPersons = this.persons.map(function(person){
return {
name:person.name,
age : person.age
}
});
}
}`
答案 0 :(得分:0)
修改强>
正如我们发现的那样,不需要第二个数组,但应将country字段添加到现有的persons
- 数组中。我们可以使用一个简单的for循环,我们推送一个新的属性country
到persons
数组,并根据索引从countries
数组添加相应的值:
for(let i=0;i<this.persons.length; i++) {
this.persons[i].country = this.countries[i]
}
原始答案:
我想你想要两个数组的相应索引组合起来,这样就可以了:
// local variable to increment in map to get corresponding value of index in 'countries' array
i: number = 0;
this.newPersons = this.persons.map(a => Object.assign({name:a.name, age:a.age,country:this.countries[this.i++]}));
这导致以下结果:
[
{
"name": "Marvin",
"age": 12,
"country": "US"
},
{
"name": "Carla",
"age": 15,
"country": "UK"
}
]