J'ai deux matrices, l'une est une référence (paramètre) à partir d'une fonction, et l'autre est créée dans le cadre de la fonction - exactement le même scénario que celui décrit ici: P>
Ajouter deux tableaux sans utiliser la méthode Concat < / p>
J'utilisais la méthode push.apply () selon la suggestion ci-dessus, mais quelqu'un peut-il m'expliquer, pourquoi je ne peux pas utiliser Concat () pour fusionner deux matrices si le tableau est envoyé dans la fonction en tant que Référence? P>
3 Réponses :
Si vous utilisez concat code> le tableau d'origine sera non modifié em>. Si vous avez une référence à cela, vous ne verrez pas les nouveaux éléments.
var arr1 = [ "a", "b" ];
var arr2 = [ "c", "d" ];
var arr3 = arr1.concat(arr2);
Je ne pourrai pas accepter 2 réponses mais c'était utile aussi bien-être, merci!
Cela nécessite-t-il une array.ProTotype ou peut-il être fait avec juste un tableau?
Voir array.concat sur MDN: P >
Toute opération sur le nouveau tableau n'aura aucun effet sur les matrices d'origine em>, et inversement. P> blockQuote>
Ceci fait se comporter différemment em> de
array.push.apply code> quel sera em> muté l'objet de tableau d'origine - la valeur de retour de
Array.concat code> doit être utilisé. Sinon, cela fonctionne comme expliqué dans le lien MDN ci-dessus. P>
Il indique également que "des références d'objet (et non de l'objet réel): Concocies copie des références d'objet dans la nouvelle matrice. L'original et la nouvelle matrice se rapportent au même objet. C'est-à-dire que si un objet référencé est modifié, les modifications sont visibles. aux nouveaux et originaux. "
@Tamas qui parle d'objets dans i> les tableaux, pas les tableaux eux-mêmes - mais oui.
Disons que nous avons 2 tableaux "A" et "B". array.concat code> méthode
de code> "C" qui représente la concaténation entre A et B sans aucune mutation d'une ou b fort>.
Array.Push Code> Retour Strong> Dernier index d'élément poussé et muté
Ceci code> strong>
de
de
Depuis ES6 (ou 15, pas sûr), il est possible de décompresser les paramètres et vous pouvez utiliser Push to Concaténate (sans code nocif) également a = [1,2,3,4]; // a=[1,2,3,4];
b = [5,6,7,8]; // b=[5,6,7,8];
a.push(...b) // a=[1,2,3,4,5,6,7,8]; b=[5,6,7,8]
Merci, c'est très utile!
Regardez le lien. Peu importe ce que je fais, c'est exactement la même chose que montré sur l'autre page.