web-dev-qa-db-fra.com

Pourquoi Array.Push.apply ne fonctionne-t-il pas?

Comme décrit ici , un moyen rapide d'ajouter le tableau b au tableau a en javascript est a.Push.apply(a, b).

Vous remarquerez que l'objet a est utilisé deux fois. Vraiment, nous voulons juste la fonction Push, et b.Push.apply(a, b) accomplit exactement la même chose - le premier argument de apply fournit le this pour la fonction appliquée.

J'ai pensé qu'il serait plus logique d'utiliser directement les méthodes de l'objet Array: Array.Push.apply(a, b). Mais ça ne marche pas!

Je suis curieux de savoir pourquoi, et s'il y a une meilleure façon d'atteindre mon objectif. (Application de la fonction Push sans avoir à appeler deux fois un tableau spécifique.)

41
starwed

C'est Array.prototype.Push , pas Array.Push

63
Ven

Vous pouvez également utiliser [].Push.apply(a, b) pour une notation plus courte.

7
erdem

Qu'est-ce qui ne va pas chez Array.prototype.concat ?

var a = [1, 2, 3, 4, 5];
var b = [6, 7, 8, 9];

a = a.concat(b); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
2
phenomnomnominal

La version actuelle de JS vous permet de décompresser un tableau dans les arguments.

var a = [1, 2, 3, 4, 5,];
var b = [6, 7, 8, 9];

a.Push(...b); //[1, 2, 3, 4, 5, 6, 7, 8, 9];
1
David Griffin