Je suis sûr que c'est facile, mais mes recherches n'ont pas encore aidé à ne pas encore.
Lorsque je pousse un tableau dans un autre tableau, ils nichent un niveau plus profond. Le premier tableau est à la bonne profondeur. P> résultat: p>
3 Réponses :
Vous avez plusieurs options pour concaténer deux tableaux, mais p> .push code> n'est pas (sauf si vous iTontrez le 2e tableau et poussez chaque élément individuellement, ou suivez avec .flat () Code>) let array = [1, 2, 3];
array.push([4, 5, 6]);
console.log(array); // [1, 2, 3, [4, 5, 6]]
array = array.concat([7, 8, 9]);
console.log(array); // [1, 2, 3, [4, 5, 6], 7, 8, 9]
array = [...array, ...[10, 11, 12]];
console.log(array); // [1, 2, 3, [4, 5, 6], 7, 8, 9, 10, 11, 12]
array.push(13, 14, 15);
array = array.flat();
console.log(array); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Hey Junvar. À l'avenir, envisagez de marquer des doublons plutôt que de les répondre. Soumettre des réponses aux questions qui ont déjà été posées a déjà tendance à encombrer le site avec des informations répétées et encourage les utilisateurs à poser des questions répétées :)
parce que productarraray em> est un tableau et non un objet, le poussant dans un autre tableau créera un autre tableau em>, qui contiendra à la fois le tableau initial et le nouveau Un. Pour faire ce que vous attendiez, vous devez déclarer un nouvel objet et pousser il em> dans le tableau existant. P> var productObject = {productID: 1, productPrice: 1, productName: '', options:{}};
var productArray = [];
if(localStorage.getItem("cart")){
var existingArray = JSON.parse(localStorage.getItem("cart"));
existingArray.push(productObject );
localStorage.setItem("cart", JSON.stringify(existingArray));
} else {
productArray.push(productObject);
localStorage.setItem("cart", JSON.stringify(productArray));
}
Je pense que vous ajoutez tout le "producteur" dans la position N de votre "existantarray". Essayez de faire cela.
var productArray = [{productID: currentProduct, productPrice: currentPrice, productName: productName, options: myOptions}];
if(localStorage.getItem("cart")){
var existingArray = JSON.parse(localStorage.getItem("cart"));
productArray.forEach(function(val){
existingArray.push(val);
})
localStorage.setItem("cart", JSON.stringify(existingArray));
} else {
localStorage.setItem("cart", JSON.stringify(productArray));
}
C'est ce qui est supposé i> se produire, pourquoi es-tu attendu autrement?
Plutôt que
poussez code> dans l'autre dans l'autre, vous devez concaténer (en utilisantConcat code>ou... code>, par exemple).@jonrsharpe à partir du 2e tableau vers l'avant, le tableau est de 1 niveau plus profond.
existantearray.push (... Producteur) code> ou pour Internet Exploder,existantarray.push.apply (existantarray, productarray) code>@TyLerroper, je vais essayer ..., Concat ne fonctionne pas. Il ne jette aucune erreur, mais le nouveau tableau ne se fusionne pas.
@M_Becker
concat code> ne modifie pas l'une des tableaux; Il renvoie un tableau nouveau i>. Vous voudrez probablement stocker cela comme une nouvelle variable, c'est-à-direvar newarray = array1.concat (array2) code>, oùnewarray code> est le résultat fusionné dearray1 < / code> etarray2 code>.@TyLerroper ... a travaillé. J'ai appris quelque chose de nouveau aujourd'hui, merci! Souhaitez-vous le soumettre comme une réponse afin que je puisse le marquer comme résolu?
@M_Becker Je l'apprécie - heureux d'avoir pu aider. Je crois que cette question tombe probablement sous une poignée de doublons potentiels. Vous pouvez peut-être accepter l'une des dupes suggérées et les futurs lecteurs de futurs points à la place :)
@TyLerropero fera, merci encore!