如何在Typescript中复制数组并向复制的数组添加新字段

时间:2017-05-21 12:50:15

标签: javascript angular typescript

我有一个人阵。 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
      }
    });
  }
}`

1 个答案:

答案 0 :(得分:0)

修改

正如我们发现的那样,不需要第二个数组,但应将country字段添加到现有的persons - 数组中。我们可以使用一个简单的for循环,我们推送一个新的属性countrypersons数组,并根据索引从countries数组添加相应的值:

for(let i=0;i<this.persons.length; i++) {
  this.persons[i].country = this.countries[i]
}

PLUNKER

原始答案:

我想你想要两个数组的相应索引组合起来,这样就可以了:

// 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"
  }
]

PLUNKER