J'ai deux tableaux. Ce que j'essaie de faire, c'est de les fusionner et d'écraser la valeur de l'index. Voici les tableaux que j'ai:

var array1 = [
    ["","","","","","",""],
    ["","","","","","",""],
    ["","","","","","",""],
];

var array2 = [
    ["a","",""],
    ["","b",""]
];

Ma sortie attendue est

var output = [
    ["a","","","","","",""],
    ["","b","","","","",""],
    ["","","","","","",""]
];

Mais le résultat que j'obtiens est:

entrez la description de l'image ici

Ce que j'ai essayé jusqu'à présent, c'est array1.concat(array2). Je ne veux vraiment pas utiliser le plus long foreach possible pour éviter les codes longs. Quelqu'un peut-il me donner des suggestions sur la façon d'obtenir le résultat souhaité? Merci.

-2
Sanv Ariana 9 déc. 2020 à 16:24

2 réponses

Meilleure réponse

Ce qui suit fonctionnera, même si cela suppose que array2 a la préférence sur array1 et n'a jamais plus de lignes que array1.

const array1 = [
    ["","","","","","",""],
    ["","","","","","",""],
    ["","","","","","",""],
];

const array2 = [
    ["a","",""],
    ["","b",""]
];

const output = array2
    // pad array2's values with extra values from array1
    .map((row, idx) => row.concat(array1[idx].slice(row.length)))
    // add any missing rows
    .concat(array1.slice(array2.length));

console.log(output);
0
Yoshi 9 déc. 2020 à 13:37

Vous pouvez effectuer les opérations suivantes,

const res = array1.map((row, i) => {
    if(i < array2.length) {
       updatedRow = [...array2[i], ...row];
       updatedRow.splice(array2[i].length -1 , array2[i].length);
       return updatedRow;
   }
   return row;
});
console.log(res);
0
sabbir.alam 9 déc. 2020 à 13:38
65217719