input.addEventListener('blur',() => {
let texte=input.value;
let lettres=[];
let nbRt=0;
for(let i=0; i<texte.length; i++){
if(texte[i]=='\n'){
nbRt++;
}else{
lettres.push(chars.indexOf(texte[i]));
}
}
let txt="";
txt+="<table cellspacing='0' cellpadding='0'><tr>";
let i=0;
let j=0;
let k=0;
while(i<8){
txt+= "<tr>";
while(j<lettres.length){
if(lettres[j]==95){
txt+="<td> </td>";
}else{
while(k<standard[lettres[j]][i].length){
if (standard[lettres[j]][i][k]==' '){
txt+="<td> </td>";
}else{
txt+="<td>"+standard[lettres[j]][i][k]+"</td>";
}
k++;
}
}
j++;
k=0;
}
txt+= "</tr>";
i++;
j=0;
}
txt+="</table>";
output.innerHTML=txt;
output.style.color=color.value
},false)
Qui me permet de faire du ascii-art mais seulement sur une ligne, mais j'ai quand même une partie qui compte les \n(retours à la ligne) c'est la variable nbRt.
Sinon, les texte est récupéré dans un textarea(input) et le Ascii est envoyé dans un p(output).
J'ai mis la création du tableau dans un for qui boucle sur nbRt :
input.addEventListener('blur',() => {
let texte=input.value;
let lettres=[];
let nbRt=0;
for(let i=0; i<texte.length; i++){
if(texte[i]=='\n'){
nbRt++;
}else{
lettres.push(chars.indexOf(texte[i]));
}
}
let txt="";
for(let l=0; l<=nbRt; l++){
txt+="<table cellspacing='0' cellpadding='0'><tr>";
let i=0;
let j=0;
let k=0;
while(i<8){
txt+= "<tr>";
while(j<lettres.length){
if(lettres[j]==95){
txt+="<td> </td>";
}else{
while(k<standard[lettres[j]][i].length){
if (standard[lettres[j]][i][k]==' '){
txt+="<td> </td>";
}else{
txt+="<td>"+standard[lettres[j]][i][k]+"</td>";
}
k++;
}
}
j++;
k=0;
}
txt+= "</tr>";
i++;
j=0;
}
txt+="</table>";
}
output.innerHTML=txt;
output.style.color=color.value
},false)
Sauf que du coup, l'entièreté du texte est écrit sur chaque ligne j'ai donc voulu compartimenter les lignes dans un tableau bidimensionnel... Et c'est là que ça se complique...
J'ai essayé comme ça :
let lettres=[];
let nbRt=0;
let temp=[];
for(let i=0; i<texte.length; i++){
if(texte[i]=='\n'){
lettres.push(temp);
nbRt++;
while (temp.length!==0){
temp.pop();
}
}else{
temp.push(chars.indexOf(texte[i]));
}
}
En passant par un deuxième tableau pour remplir le premier, mais évidemment ça ne marche pas mais ça ne garde que la dernière entrée.
Merci par avance.
PS : chars est un tableau avec tous les caractères :
let chars=['!','\"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','\n',' '];
- Edité par Cyprien Siaud 16 janvier 2021 à 12:05:23
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson. Confucius
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.
(titre originel : Tableau multidimensionnel)
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Au final j'ai trouvé, il faut à chaque fois créer un nouveau tableau et le remplir au fur et à mesure :
let tests=[];
for (let i=0; i<5; i++){
tests.push([]);
for (let j=0; j<10; j++){
tests[i].push(j);
}
}
alert(tests);
A+
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson. Confucius
Remplissage d'un tableau bidimensionnel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius