Angular 2如何将两个相等的索引数组合并为一个?

时间:2018-12-04 09:39:04

标签: javascript angular typescript

例如,如果我有两个相等的索引数组:

A [
{name: Jhon}
{name: Jacob}
{name: Lukas}
]

B [
{fr: Prince} //fr, en, it is language, Prince is LastName
{en: Breed}
{it: Lasontos}
]

如何将其合并为一个,如下所示:

 A [
    {name: Jhon, lastname: Prince, country: fr }
    {name: Jacob, lastname: Breed, country: en}
    {name: Lukas, lastname: Lasontos, country: it}
    ]

3 个答案:

答案 0 :(得分:5)

使用在第一个对象数组上应用的Object.assign(obj1, obj2)map()方法。

var arr = [
  {firstname: 'John'},
  {firstname: 'Hello'}
]

var arr2 = [
  {fr: 'Here'},
  {en: 'There'}
]

arr.map((obj, index) => {

  var internalization = {
    country: Object.keys(arr2[index])[0],
    lastname: arr2[index][Object.keys(arr2[index])[0]]
  }

  return Object.assign(obj, internalization);
})

console.log(arr);

工作中的小提琴:

https://jsbin.com/wepibuwazi/1/edit?js,console,output

答案 1 :(得分:1)

如果B数组中的对象始终只具有一个属性,则以下代码应做到这一点,尽管这是使用对象的一种奇怪方法。如果您可以控制B的结构,建议您将条目设置为具有姓氏属性和国家/地区属性的对象,而不要使用国家/地区作为键。这样,您就可以使用Andrei的原始答案。

var A = [
  {name: Jhon}
  {name: Jacob}
  {name: Lukas}
]

var B = [
  {fr: Prince} //fr, en, it is language, Prince is LastName
  {en: Breed}
  {it: Lasontos}
]

A.map((obj, index) => {
  var keys = Object.keys(B[index]);
  obj.country = keys[0];
  obj.lastname = B[index][keys[0]];
  return obj;
});

答案 2 :(得分:0)

您可以尝试

let A = [
         {name: 'Jhon'},
         {name: 'Jacob'},
         {name: 'Lukas'}
        ]

let B = [
         {fr: 'Prince'},
         {en: 'Breed'},
         {it: 'Lasontos'},
        ]

 for(let i in B){
   let temp = Object.keys(B[i])[0];
   A[i].country = temp
   A[i].lastname = B[i][temp];
 }

console.log(A)