J'ai essayé de faire fonctionner cela, mais la boucle externe s'arrête après la deuxième itération, et tout ce qui suit ne s'exécute pas (comme si c'était la fin du script). Je veux remplir un tableau à deux dimensions avec n'importe quel caractère (ici j'ai utilisé 'q' comme exemple)
var A=[[],[]];
for(var i=0;i<12;i++){
for(var j=0;j<81;j++){
A[i][j]='q';
}
}
Cela n'a pas fonctionné, alors j'ai mis alert (i + '' + j); pour voir s'il est même en cours d'exécution, et, comme je l'ai déjà écrit, il s'arrête après la deuxième itération de la boucle externe, puis ignore le reste du script.
Tout ce que je veux, c'est avoir ce tableau rempli avec le même caractère dans la plage donnée (12 lignes, 81 colonnes dans ce cas spécifique), donc s'il n'y a aucun espoir dans cette méthode, je serai heureux d'en voir une qui fonctionne.
p >
4 Réponses :
var A = [[], []];
^ Cette ligne déclare un tableau à deux dimensions de taille 1x2. Essayez plutôt ceci:
var A = [];
for (var i = 0; i < 12; i++) {
A[i] = [];
for (var j = 0; j < 81; j++) {
A[i][j] = 'q';
}
}
@MarkMeyer J'ai oublié A [i] = []; sur la troisième ligne quand j'ai reformaté le code pour rendre la validation du formulaire de dépassement de pile pour le code multiligne heureuse :) Belle prise!
Vous devez initialiser un nouveau tableau pour i chaque fois que la première boucle s'exécute, et vous n'avez pas besoin de définir la disposition du tableau avant de le créer (supprimez le [ ], [] à l'intérieur de la déclaration de A ). Essayez ceci:
.as-console-wrapper {
max-height: 100% !important;
top: 0;
}
var A = [];
for (var i = 0; i < 12; i++) {
A[i] = [];
for (var j = 0; j < 81; j++) {
A[i][j] = 'q';
}
}
console.log(A);
La méthode Array.from () crée une nouvelle instance Array copiée peu profonde à partir d'un objet de type tableau ou itérable.
function createAndFillTwoDArray({ rows, columns, defaultValue }){ return Array.from({ length:rows }, () => ( Array.from({ length:columns }, ()=> defaultValue) )) } console.log(createAndFillTwoDArray({rows:3, columns:9, defaultValue: 'q'}))
Cela fait le travail en une seule ligne.
var A = Array (12) .fill (null) .map (() => Array (81) .fill ('q'))
Ceci est un tableau de références et une mauvaise idée comme l'a commenté Harunurhan.
var A = Array (12) .fill (Array (81) .fill ('q'));
Dans ce cas, tous les éléments de A feront référence à la même référence de tableau, donc modifier un A [i] [j] modifiera également A [0 ... 11] [j]
Bien expliqué ici medium.com/@wisecobbler /…
Vous n'initialisez
Aqu'avec 2 éléments. Vérifiez toujours votre console pour les erreurs avant de demander pourquoi les choses ne fonctionnent pas.Uncaught TypeError: Impossible de définir la propriété '0' sur undefinedCréez un tableau à affecter à[i]à l'intérieur de la boucle externe.Une manière intéressante est quelque chose comme const A = Array (12) .fill (0) .map (() => Array (81) .fill ("q"));
Double possible de Moyen efficace de déclarer et de peupler un tableau multidimensionnel dans Javascript