125 votes

Déclarer un tableau bidimensionnel vide en Javascript ?

Je veux créer un tableau à deux dimensions en Javascript où je vais stocker les coordonnées (x,y). Je ne sais pas encore combien de paires de coordonnées j'aurai car elles seront générées dynamiquement par l'entrée de l'utilisateur.

Exemple de tableau 2d prédéfini :

var Arr=[[1,2],[3,4],[5,6]];

Je suppose que je peux utiliser la méthode PUSH pour ajouter un nouvel enregistrement à la fin du tableau.

Comment puis-je déclarer un tableau vide à deux dimensions de sorte que lorsque j'utilise mon premier Arr.push(), il sera ajouté à l'index 0, et chaque enregistrement suivant écrit par push prendra l'index suivant ?

C'est probablement très facile à faire, je ne suis qu'un novice en matière de JS, et j'apprécierais si quelqu'un pouvait écrire un court extrait de code fonctionnel que je pourrais examiner. Merci

7voto

Rahul Tripathi Points 1

Vous pouvez essayer quelque chose comme ceci :-

var arr = new Array([]);

Poussez les données :

arr[0][0] = 'abc xyz';

7voto

sharkk22 Points 45

One Liner

let m = 3 // rows
let n = 3 // columns
let array2D = Array(m).fill().map(entry => Array(n))

Cette implémentation crée un sous-réseau unique pour chaque entrée. Ainsi, la définition de array2D[0][1] = 'm' ne donne pas la valeur "m" à l'indice [1] de chaque entrée

4voto

UIlrvnd Points 776

Un tableau vide est défini en omettant des valeurs, comme ceci :

v=[[],[]]
a=[]
b=[1,2]
a.push(b)
b==a[0]

4voto

entoniperez Points 514

Vous pouvez remplir un tableau avec des tableaux en utilisant une fonction :

var arr = [];
var rows = 11;
var columns = 12;

fill2DimensionsArray(arr, rows, columns);

function fill2DimensionsArray(arr, rows, columns){
    for (var i = 0; i < rows; i++) {
        arr.push([0])
        for (var j = 0; j < columns; j++) {
            arr[i][j] = 0;
        }
    }
}

Le résultat est :

Array(11)
0:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
3:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
5:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
6:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
7:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
8:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
9:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
10:(12)[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

3voto

Garrett Points 1534
const grid = Array.from(Array(3), e => Array(4));

Array.from(arrayLike, mapfn)

mapfn est appelé, en recevant la valeur undefined en retournant new Array(4) .

Un itérateur est créé et l next est appelé à plusieurs reprises. La valeur renvoyée par next , next().value es undefined . Cette valeur, undefined est ensuite transmis à l'itérateur du tableau nouvellement créé. Chaque itération value es undefined que vous pouvez voir si vous l'enregistrez.

var grid2 = Array.from(Array(3), e => {
  console.log(e); // undefined
  return Array(4); // a new Array.
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X