objects - remplir tableau javascript




concat les tableaux avec forEach (3)

J'ai deux tableaux qui sont composés de 20 tableaux d'objets. Comme ça:

var array1 = [
  [
    {'x':0,'y':0},
    {'x':0,'y':0}
  ],
  [
    {'x':1,'y':1},
    {'x':1,'y':1}
  ],
...
  [
    {'x':19,'y':19},
    {'x':19,'y':19}
  ]
];

var array2 = [
  [
    {'x':0,'y':0},
    {'x':0,'y':0}
  ],
  [
    {'x':1,'y':1},
    {'x':1,'y':1}
  ],
...
  [
    {'x':19,'y':19},
    {'x':19,'y':19}
  ]
];

Je veux que le résultat final soit:

[
    [
    {'x':0,'y':0},
    {'x':0,'y':0},
    {'x':0,'y':0},
    {'x':0,'y':0}
    ],
...
];

J'attache donc deux éléments dans chaque tableau, ce qui signifie que chaque tableau doit maintenant contenir quatre objets.

Ce que j'ai essayé était:

      var array3 = array1;

      array3.forEach(function(item,i) {
         item.concat(array2[i])
      })

Mais rien n'a été ajouté

Question

Existe-t-il une approche moins laborieuse pour concatter des articles de manière itérative?


Ceci est une opération "zip" assez typique, qui peut être accomplie en utilisant map .

var array1 = [
  [
    {'x':0,'y':0},
    {'x':0,'y':0}
  ],
  [
    {'x':1,'y':1},
    {'x':1,'y':1}
  ],
  [
    {'x':19,'y':19},
    {'x':19,'y':19}
  ]
];

var array2 = [
  [
    {'x':0,'y':0},
    {'x':0,'y':0}
  ],
  [
    {'x':1,'y':1},
    {'x':1,'y':1}
  ],
  [
    {'x':19,'y':19},
    {'x':19,'y':19}
  ]
];

var result = array1.map( (item,i) => item.concat(array2[i]));
console.log(result);


Que dis-tu de ça?

var array3 = array1.map((a, idx) => [...a, ...array2[idx]] )

Array.concat() ne Array.concat() pas le tableau d'origine, ce qui signifie qu'il crée une nouvelle instance de tableau.

Par conséquent, vous devez affecter un tableau concaténé à la valeur d'origine.

  var array3 = array1;

  // If you don't want to mutate 'array1, use spread operator like following:
  // var array3 = [...array1];

  array3.forEach(function(item,i) {
     array3[i] = item.concat(array2[i])
  })




arrays