Присоединить новый массив объектов к текущему - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю над проектом Angular 6, который получает некоторые данные по ngOnInit() из бэкэнд-API. При втором отдельном вызове API возвращает второй пакет данных.

Первый и второй пакеты данных выглядят одинаково, вот так:

 [ 
   { 
     title: "Demo Titel",
     teaser: "Foo Bar Baz Foo Bar Baz Foo Bar Baz",
     otherStuff: "Blaa Fooo"
   }, 
   {
     title: "Demo Titel 2",
     teaser: "Foo 2 Bar 2 Baz 2 Foo 2 Bar 2 Baz 2 Foo 2 Bar 2 Baz",
     otherStuff: "Blaa 222 Fooo"
   },
   {…},
   {…},
   {…}, 
 ]

Итак, теперь я хочу поместить второй пакет данных, который выглядит полностью таким же, перед первыми данными.

Я пытался сделать это с ... операторами и concat(), но эти возможности всегда просто помещают вторые данные после первых, а не перед ними.

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Вы можете достичь этого с помощью оператора распространения. Ключом является размещение ... со вторым / новым набором данных. Вам нужно поместить его в начало массива, чтобы добавить его.

this.existingItems = [...newItems, ...this.existingItems];

const foo = [ 
   { 
     title: "Demo Tite 1",
     teaser: "Foo Bar Baz Foo Bar Baz Foo Bar Baz",
     otherStuff: "Blaa Fooo"
   }, 
   {
     title: "Demo Titel 2",
     teaser: "Foo 2 Bar 2 Baz 2 Foo 2 Bar 2 Baz 2 Foo 2 Bar 2 Baz",
     otherStuff: "Blaa 222 Fooo"
   }
 ];
 
 const bar = [ 
   { 
     title: "Demo Titel 3",
     teaser: "Foo Bar Baz Foo Bar Baz Foo Bar Baz",
     otherStuff: "Blaa Fooo"
   }, 
   {
     title: "Demo Titel 4",
     teaser: "Foo 2 Bar 2 Baz 2 Foo 2 Bar 2 Baz 2 Foo 2 Bar 2 Baz",
     otherStuff: "Blaa 222 Fooo"
   }
 ];
 
 const baz = [...bar, ...foo];
 
 console.log(baz);

Надеюсь, это поможет!

0 голосов
/ 15 сентября 2018

Вы можете использовать concat по своему усмотрению, и он будет объединять массивы в том же порядке, как вы передали их в методе concat. В этом примере я регистрирую 2 заказа - arr1 -> arr2 и arr2 -> arr1 :

const arr1 = [
  {
    prop1: "ONE Value 1",
    prop2: "ONE Value 2"
  },
  {
    prop1: "ONE Value 1",
    prop2: "ONE Value 2"
  }
];

const arr2 = [
  {
    prop1: "TWO Value 1",
    prop2: "TWO Value 2"
  },
  {
    prop1: "TWO Value 1",
    prop2: "TWO Value 2"
  }
];

console.log([].concat(arr1, arr2)); // The order is: arr1, arr2
console.log([].concat(arr2, arr1)); // The order is: arr2, arr1
0 голосов
/ 14 сентября 2018

Если ваша проблема в том, что array1 идет перед массивом 2 следующим образом:

var array1 = ["item 1", "item 2"];
var array2 = ["item 3", "item 4", "item 5"];
return array1.concat(array2);

Не могли бы вы изменить способ использования concat

return array2.concat(array1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...