Array length

Résolu/Fermé
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - Modifié le 8 févr. 2018 à 19:08
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 10 févr. 2018 à 11:46
Bonjour,

J'ai écrit un script qui me paraissait correct mais qui ne fonctionne pas...
        
var comm = {};
comm["author"] = author;
comm["title"] = title;
comm["time"] = time;
comm["comment"] = comment;

var comments = {};
comments[0] = comm;
comments[1] = comm;
comments[2] = comm;
console.log(comments);

function display_comments(comments)
{
var nb = $(comments).length; console.log(nb+" éléments");
}


Le premier console.log me retourne bien 3 éléments identiques, mais le deuxième me sort "1 éléments". Pourquoi ? Qu'est-ce que je fais mal ?
(je fais simplement un test avec une page html avant d'écrire le script ajax et la page php qui renverront une série de données, c'est pour ça que j'ai utilisé 3 fois les mêmes données)

Merci d'avance pour votre aide !:-)

2 réponses

ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
Modifié le 8 févr. 2018 à 23:06
personne ?
0
Bonjour

Qu'appelles-tu le deuxième ? Ton script fait un seul console.log. Le second est dans une focntion et tu ne dis pas comment tu appelles cette fonction.

Et que fait ce $ dans ta fonction ? Tu utilises jquery ? Si oui (c'eût été bien de le préciser), je ne vois pas ce que peut représenter $(comments), mais en tous cas ce n'est pas la même chose que comments.
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
Modifié le 9 févr. 2018 à 15:46
oui, pardon, j'ai aussi
        $( document).ready( function () {
display_comments(comments)
});

c'est à ce moment-là que ça me sort "1 éléments".
Je ne comprends pas bien ta réponse, comments est un array, et le console.log(comments) affiche
Object
0 : {author: "ephelya", title: "Je suis contente", time: "14 janvier 17", comment: "Bla bla bla lorem ipsum sit amet"}
1 : {author: "ephelya", title: "Je suis contente", time: "14 janvier 17", comment: "Bla bla bla lorem ipsum sit amet"}
2 : {author: "ephelya", title: "Je suis contente", time: "14 janvier 17", comment: "Bla bla bla lorem ipsum sit amet"}
, ce sont les infos définies précédemment
Je veux juste que mon script m'indique le nombre d'éléments contenus dans l'array, c'est bien $(comments).length, qui devrait me retourner 3, non ?
0
Utilisateur anonyme
9 févr. 2018 à 16:50
Plusieurs remarques :
1 - Non, comments n'est pas un array. On définit un array avec des crochets carrés [ ], pas des accolades { }. Si c'était un array, console.log (comments) t'afficherait Array, pas Object.
2 - Tu n'as pas répondu à ma question sur ton $ dans $(comments). À quoi sert-il ? Si comments était un Array, tu aurais sa longueur avec comments.length, pourquoi ajouter un $ ???
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
10 févr. 2018 à 11:46
En fait, je ne connais tout simplement pas javascript, je débute en jquery et je pioche ici et là les scripts dont j'ai besoin, et en général, ça fonctionne, mais c'est normal que je fasse encore des errerus grossières... ;-)
En tout cas, j'ai remplacé {} par [] et $(comments).length par comments.length et ça fonctionne parfaitement, merci beaucoup ! :-)
0