2010-01-03 13 views
225

En PHP, je ferais quelque chose comme:Ajouter une nouvelle valeur à un tableau existant en JavaScript

$array = array(); 
$array[] = "value1"; 
$array[] = "value2"; 
$array[] = "value3"; 

Comment puis-je faire la même chose en JavaScript?

+59

jQuery n'est pas un langage; JavaScript est. – mpen

+79

http://i.stack.imgur.com/ssRUr.gif – Broxzier

+4

@ChrisB - pour ceux qui se demandent, Javascript est le langage utilisé pour implémenter le glorieux JQuery. – Davor

Répondre

350

Vous n'avez pas besoin de jQuery pour cela. Utilisez javascript régulier

var arr = new Array(); 
// or var arr = []; 
arr.push('value1'); 
arr.push('value2'); 

Note: En javascript, vous pouvez également utiliser des objets comme des tableaux, mais qui ont encore accès aux prototypes Array. Cela rend le objet comme se comporte un tableau:

var obj = new Object(); 
Array.prototype.push.call(obj, 'value'); 

va créer un objet qui ressemble à:

{ 
    0: 'value', 
    length: 1 
} 

Vous pouvez accéder aux Vaules comme un tableau normal p.ex obj[0].

+5

exactement comment l'objet "jQuery" retourné par '$()' fonctionne –

+1

Eh bien, je suis sûr qu'il y a un plugin qui vous permet de le faire avec jQuery: P –

+75

Que diriez-vous de '[]' au lieu de 'nouveau tableau() 'et' {} 'au lieu de' new Object() '... – James

11

Vous pouvez utiliser la méthode .push() (qui est la norme JavaScript)

par exemple

var primates = new Array(); 
primates.push('monkey'); 
primates.push('chimp'); 
100

Cela n'a rien à voir avec jQuery, mais seulement JavaScript en général.

Pour créer un tableau en JavaScript:

var a = []; 

Ou:

var a = ['value1', 'value2', 'value3']; 

Pour ajouter des valeurs à la fin du tableau existant:

a.push('value4'); 

Pour créer un nouveau tableau, vous devriez vraiment utiliser [] au lieu de new Array() pour les raisons suivantes:

  • new Array(1, 2) est équivalent à [1, 2], mais new Array(1) est pas équivalent à [1]. Plutôt, ce dernier est plus proche de [undefined], car un seul argument entier au constructeur Array indique la longueur de tableau désirée.
  • Array, comme toute autre classe JavaScript intégrée, n'est pas un mot-clé. Par conséquent, quelqu'un pourrait facilement définir Array dans votre code pour faire autre chose que de construire un tableau.
+37

+1 pour '[]' au lieu de 'new Array()'. – BalusC

1
array = ["value1", "value2", "value3"] 

ce n'est pas tant que jquery javascript

+1

ce n'est pas * ajouter * des valeurs à un tableau, c'est créer un tableau avec des valeurs déjà dedans. – nickf

+1

Je ne voudrais pas downvote pour cela, mais merci pour au moins expliquer votre opinion –

0

jQuery est une abstraction de JavaScript. Pensez à jQuery comme un sous-ensemble de JavaScript, destiné à travailler avec le DOM. Cela étant dit; il y a des fonctions pour ajouter des articles à une collection. Je voudrais utiliser le JavaScript de base dans votre cas si:

var array; 

array[0] = "value1"; 
array[1] = "value2"; 
array[2] = "value3"; 

...Ou:

var array = ["value1", "value2", "value3"]; 

... Ou:

var array = []; 

array.push("value1"); 
array.push("value2"); 
array.push("value3"); 
+5

Je l'appellerais un «cadre» ... et ce n'est pas un sous-ensemble non plus. – mpen

+0

Vous devez initialiser la variable 'array' en un objet' Array' dans votre premier exemple, sinon ce sera 'undefined' et vous ne pourrez pas l'appeler' push'. –

+0

@Ionut G. Stan: J'initialise le tableau en faisant 'var array = [];' – roosteronacid

30

tableau est un objet natif JavaScript, pourquoi avez-vous juste essayer de ne pas utiliser l'API de celui-ci? Connaître l'API seul vous fera gagner du temps lorsque vous passerez au JavaScript pur ou à un autre framework.

Il existe plusieurs possibilités différentes, utilisez donc celle qui répond le mieux à vos besoins.

Création d'un réseau avec des valeurs:

var array = ["value1", "value2", "value3"]; 

L'ajout de valeurs à la fin

var array = []; 
array.push("value1"); 
array.push("value2"); 
array.push("value3"); 

L'ajout de valeurs aux BEGIN:

var array = []; 
array.unshift("value1"); 
array.unshift("value2"); 
array.unshift("value3"); 

valeurs Ajout à un index:

var array = []; 
array[index] = "value1"; 

ou en utilisant épissure

array.splice(index, 0, "value1", "value2", "value3"); 

Choisissez celui qui vous convient.

+0

Celui avec des index ne fonctionne pas pour moi. Je l'utilise dans une fonction map $ ('select [id^= "filter _"]'). Map (function() { var nom = $ (this) .prop ('nom'); filtres [nom] = $ (this) .val(); –

10

Il existe plusieurs façons:

instanciation du tableau:

var arr; 

arr = new Array(); // empty array 

// --- 

arr = [];   // empty array 

// --- 

arr = new Array(3); 
alert(arr.length); // 3 
alert(arr[0]); // undefined 

// --- 

arr = [3]; 
alert(arr.length); // 1 
alert(arr[0]); // 3 

pousser au tableau:

arr = [3];  // arr == [3] 
arr[1] = 4; // arr == [3, 4] 
arr[2] = 5; // arr == [3, 4, 5] 
arr[4] = 7; // arr == [3, 4, 5, undefined, 7] 

// --- 

arr = [3]; 
arr.push(4);  // arr == [3, 4] 
arr.push(5);  // arr == [3, 4, 5] 
arr.push(6, 7, 8); // arr == [3, 4, 5, 6, 7, 8] 

L'utilisation .push() est la meilleure façon d'ajouter une tableau, puisque vous n'avez pas besoin de savoir combien d'éléments sont déjà là, d vous pouvez ajouter plusieurs éléments dans un appel de fonction.

1

En effet, vous devez initialiser votre tableau puis juste après utiliser la ligne de commande array.push().

var array = new Array(); 
array.push("first value"); 
array.push("second value"); 
Questions connexes