web-dev-qa-db-fra.com

Quelle est la manière de déclarer un tableau en JavaScript?

J'apprends seulement le JavaScript et il semble qu'il existe plusieurs façons de déclarer des tableaux.

  1. var myArray = new Array()
  2. var myArray = new Array(3)
  3. var myArray = ["apples", "bananas", "oranges"]
  4. var myArray = [3]

Quelles sont leurs différences et quels sont les moyens préférés?

Selon ce site Web les deux lignes suivantes sont très différentes:

var badArray = new Array(10); // creates an empty Array that's sized for 10 elements
var goodArray= [10];          // creates an Array with 10 as the first element

Comme vous pouvez le voir, ces deux lignes font deux choses très différentes. Si vous vouliez ajouter plusieurs éléments, badArray serait initialisé correctement, car Javascript serait alors suffisamment intelligent pour savoir que vous initialisiez le tableau au lieu d'indiquer le nombre d'éléments à ajouter.

Est-ce que ce que les auteurs essaient de dire est que Array(10) crée un tableau avec exactement 10 éléments et que [10] crée un tableau de taille non définie avec le 0ème élément étant 10? Ou qu'est-ce que cela signifie?

23
Celeritas

La méthode préférée consiste à toujours utiliser la syntaxe littérale avec des crochets; son comportement est prévisible pour n'importe quel nombre d'éléments, contrairement à Array. De plus, Array n'est pas un mot clé, et bien que ce ne soit pas une situation réaliste, quelqu'un pourrait facilement l'écraser:

function Array() { return []; }

alert(Array(1, 2, 3)); // An empty alert box

Cependant, le problème le plus important est celui de la cohérence. Un code de refactoring pourrait rencontrer cette fonction:

function fetchValue(n) {
    var arr = new Array(1, 2, 3);

    return arr[n];
}

Comme il s'avère que seul fetchValue(0) est nécessaire, le programmeur supprime les autres éléments et rompt le code car il renvoie maintenant undefined:

var arr = new Array(1);
10
user1479055

Dans votre premier exemple, vous créez un tableau vide, comme si vous faisiez var x = []. Le deuxième exemple crée un tableau de taille 3 (avec tous les éléments undefined). Les 3ème et 4ème exemples sont les mêmes, ils font tous deux des tableaux avec ces éléments.

Soyez prudent lorsque vous utilisez new Array().

var x = new Array(10); // array of size 10, all elements undefined
var y = new Array(10, 5); // array of size 2: [10, 5]

La méthode préférée consiste à utiliser la syntaxe [].

var x = []; // array of size 0
var y = [10] // array of size 1: [1]

var z = []; // array of size 0
z[2] = 12;  // z is now size 3: [undefined, undefined, 12]
11
Rocket Hazmat

Il y a plusieurs façons de créer des tableaux.

La manière traditionnelle de déclarer et d’initialiser un tableau ressemble à ceci:

var a = new Array(5); // declare an array "a", of size 5
a = [0, 0, 0, 0, 0];  // initialize each of the array's elements to 0

Ou...

// declare and initialize an array in a single statement
var a = new Array(0, 0, 0, 0, 0); 
6
Deepak

Pour le déclarer:

var myArr = ["apples", "oranges", "bananas"];

Pour l'utiliser:

document.write("In my shopping basket I have " + myArr[0] + ", " + myArr[1] + ", and " + myArr[2]);
1
Zack

Si vous créez un tableau dont la principale caractéristique est sa longueur, plutôt que la valeur de chaque index, définir un tableau comme étant var a=Array(length); est approprié. 

par exemple-

String.prototype.repeat= function(n){
    n= n || 1;
    return Array(n+1).join(this);
}
0
kennebec