Angular 2, как поместить массив объектов в другой массив объектов - PullRequest
0 голосов
/ 05 декабря 2018

Итак, у меня есть 2 Arrays (всегда равно index):

A: [
{name: Jhon1}
{name: Jhon2}
{name: Jhon3}
]

B: [
{lastName: Pom1}
{lastName: Pom2}
{lastName: Pom3}
]

Ожидаемый результат после слияния:

A: [
   {name: Jhon1, lastName: Pom1}
   {name: Jhon2, lastName: Pom2}
   {name: Jhon3, lastName: Pom3}
]

Concat метод просто объединяет весь массив водному так:

  A: [
    {name: Jhon1}
    {name: Jhon2}
    {name: Jhon3}
    {lastName: Pom1}
    {lastName: Pom2}
    {lastName: Pom3}
    ]

Моя собственная функция, которую я пытаюсь.Ниже есть два массива: this.prices и this.search.favoriteItems, я хочу объединить их так же, как я описал ранее:

showProducts(){
   for(let i of this.localStorageArray){
    let id = localStorage.getItem(i);
    this.search.getProductsById(id).subscribe
    ((data: any) => {
     this.prices.push(data.lowestPrices.Amazon);
     this.search.favoriteItems.push(data);  
   //something here to merge this.prices and this.search
    });

  }
  }

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете использовать .map() с разрушением объекта:

let arr1 = [{name: 'Jhon1'}, {name: 'Jhon2'}, {name: 'Jhon3'}],
    arr2 = [{lastName: 'Pom1'}, {lastName: 'Pom2'}, {lastName: 'Pom3'}];

let zip = (a1, a2) => a1.map((o, i) => ({...o, ...a2[i]}));

console.log(zip(arr1, arr2));
.as-console-wrapper { max-height: 100% !important; top: 0; }
...