11487 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

je bute encore sur un problème avec Javascript, pour faire du DRY (Don't repeat Yourself)

par rapport au code ci dessous je suis amené à créer 6 jeux de variables qui ont des noms similaires:
$dataX0, $dataX1, $dataX2......
$graphX0, $graphX1, $graphX2......
et ainsi de suite, la numérotation des variables suit l'index de la boucle en cours.

mon code il est pourri, ça c'est sur, mais n'y a t-il pas un moyen d'utiliser l'index et le coller au nom de la variable?
dans le style : $dataX${index} `$dataX${index}` $dataX{index} ... ?
aucune de ces syntaxes ne fonctionne , bien sur




finalOwmArray.forEach((entry, index) => {
  let localCumulX = [];
  let localCumulY = [];
  let dateTmp = entry[0].date;
  let dayTmp  = arrayDays[new Date(entry[0].dt*1000).getDay()];

  entry.forEach((entry2, index2) => {

    localCumulX.push(entry2.hour);
    let roundedTemp = Math.round(entry2.temp);
    localCumulY.push(roundedTemp);

    switch (index) {
      case 0:
        $dataX0 = localCumulX;
        $graph0 = localCumulY;
        $date0  = dateTmp;
        $day0   = dayTmp;
        break;
      case 1:
        $dataX1 = localCumulX;
        $graph1 = localCumulY;
        $date1  = dateTmp;
        $day1   = dayTmp;
        break;
      case 2:
        $dataX2 = localCumulX;
        $graph2 = localCumulY;
        $date2  = dateTmp;
        $day2   = dayTmp;
        break;
      case 3:
        $dataX3 = localCumulX;
        $graph3 = localCumulY;
        $date3  = dateTmp;
        $day3   = dayTmp;
        break;
      case 4:
        $dataX4 = localCumulX;
        $graph4 = localCumulY;
        $date4  = dateTmp;
        $day4   = dayTmp;
        break;
      case 5:
        $dataX5 = localCumulX;
        $graph5 = localCumulY;
        $date5  = dateTmp;
        $day5   = dayTmp;
        break;
      default:
        console.log(`y a un problème`);
    }

  });


});  // parcours du finalOwmArray



Modifié par lionel_css3 (02 Sep 2023 - 22:28)
Salut,

pourquoi tu n'utilises pas des tableaux ? Smiley sweatdrop

Tu transforme $dataX0,$dataX1,$dataX2,$dataX3,$dataX4,$dataX5 en $dataX[] et ensuite tu pourras directement faire $dataX Smiley index =localCumulX;

Même principe pour $graph, $date et $day
Mathieuu a écrit :
Salut,

pourquoi tu n'utilises pas des tableaux ? Smiley sweatdrop

Tu transforme $dataX0,$dataX1,$dataX2,$dataX3,$dataX4,$dataX5 en $dataX[] et ensuite tu pourras directement faire $dataX Smiley index =localCumulX;

Même principe pour $graph, $date et $day


ah oui merci, j'avais pas pensé à ça... souvent les solutions sont simples et on les voit pas ????
Il faut voir les traitements que tu fais ensuite, mais vu que les valeurs de data graph date et day semblent "liés", plutôt que de faire plein de tableaux "indépendants" (ils sont liés par le numéro d'indice en fait) on peut aussi imaginer faire un tableau d'objets où chaque objet contiendrait les infos regroupés ensemble.


//Vers le début
let TableauxObjets = []

//dans ta boucle
let UnObjet ={dataX : "d0" , graph : "g0" , date : "d0" , day : "d0"}
TableauxObjets.push(UnObjet)

//Plus tard tu peux facilement faire des traitements via le tableau d'objets : 
TableauxObjets[i].dataX