IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Ajouter des éléments à un array


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Ajouter des éléments à un array
    Bonjour,

    Je m'excuse mais j'ai une question bête.

    J'ai ce modèle

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    datas = []; // Pour vider datas lors de chaque interaction
    datas = {
        labels: [],
        datasets: [
        {
           label: 'Dataset 1',
           data: []//,
           //borderColor: [],
           //backgroundColor: [],
        }
        ]
    };

    Je dois remplir labels et data

    Pour remplir labels, pas de problèmes
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    datas['labels'].push($(this).attr('data-x'));

    Maintenant pour remplir data, j'ai des problèmes. J'ai essayé ceci
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    datas['datasets'].data.push($(this).attr('data-y'));
    datas.datasets.data is undefined
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    datas['datasets'][0]['data'].push($(this).attr('data-y'));
    La ca va un peu mieux, mais apparement le format n'est pas OK

    Si je fais un console.log(data), j'ai ceci

    Nom : Screenshot 2022-08-04 at 23.54.10.png
Affichages : 121
Taille : 50,2 Ko

    Mais si je compare avec un code PHP qui construit ce array, le console.log m'affiche ceci

    Nom : Screenshot 2022-08-05 at 00.02.58.png
Affichages : 130
Taille : 111,4 Ko

    Vous voyez que le datasets est un object et non array, contrairement à ma première image.
    donc ceci est faux
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    datas['datasets'][0]['data'].push($(this).attr('data-y'));
    si j'essaye
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    datas['datasets'][0].data.push($(this).attr('data-y'));
    J'ai encore

    Nom : Screenshot 2022-08-04 at 23.59.23.png
Affichages : 123
Taille : 43,2 Ko

    Mais ou est donc mon erreur?

    Merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    d'après le modèle, datas['datasets'] est bien une liste. vous avez peut-être un souci avec le modèle que vous souhaitez obtenir ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Ben, il y a surement un truc que j'ai mal interpreté
    J'ai réussi comme cela (entre temps, j'ai ajouté du code)

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    $('#charts .container').each(function(){
     
     
                    l_abels=[];
                    d_ata=[];
                    unit="";
     
                    sensor_id_class = 'sensor-' + $(this).attr('data-idsensor');
     
                    $('.' + sensor_id_class + ' .data').each(function(){
                        console.log("\tx: ",$(this).data('x'));
                        l_abels.push($(this).data('x'));
                        //datas['labels'].push($(this).attr('data-x'));
                        console.log("\ty: ",$(this).data('y'));
     
                        d_ata.push(parseFloat($(this).data('y').replaceAll(',', '.')).toFixed(2));
     
                        unit = $(this).data('unit');
                        datasets = [{
                            label : $(this).data('sensor_longname'),
                            data : d_ata,
                            borderColor: "rgba(" + $(this).data('bordercolor') + ",1)",
                            backgroundColor: "rgba(" + $(this).data('backgroundcolor') + ",1)",
                            type: $(this).data('chart_style'),
                            borderWidth: $(this).data('chart_borderwidth'),
                            showLine:$(this).data('showline'),
                            pointHoverRadius:$(this).data('chart_pointhoverradius'),
                            pointRadius:$(this).data('chart_pointradius'),
                            fill:$(this).data('chart_fill'),
                        }]
     
                    });
     
     
                    console.log("l_abels: ",l_abels)
                    console.log("d_atas", d_ata)
     
                    datas = {
                      labels: l_abels,
                      datasets : datasets,
                    };
    Ca marche, mais peut-être qu'on peut faire mieux

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Bonjour,
    tu peux récupérer tous les attributs data-xx en une seule fois en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const objData = $(this).data();
    tu gagneras déjà en lisibilité en supprimant tous tes $(this).data.

Discussions similaires

  1. Ajouter des élément a un tableau
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/07/2007, 14h23
  2. Réponses: 22
    Dernier message: 04/04/2007, 15h24
  3. Ajouter des éléments à un document XML
    Par ptr83 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/10/2006, 08h43
  4. [Shell] Ajouter des éléments au poste de travail
    Par Feeder_Fan dans le forum Framework .NET
    Réponses: 2
    Dernier message: 04/12/2005, 04h07
  5. Ajouter des éléments à ListBox
    Par priest69 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2005, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo