Bonjour,
Existe-il un équivalent de la fonction count() pour javascript, exemple:
Mercivar tab = ["val1","val2","val3"]
for (i=0;i<count(tab);i++) {
alert(tab[i]);
}
Bonjour,
Existe-il un équivalent de la fonction count() pour javascript, exemple:
Mercivar tab = ["val1","val2","val3"]
for (i=0;i<count(tab);i++) {
alert(tab[i]);
}
Bonjour,
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var tab = ["val1","val2","val3"]; for (i = 0; i < tab.length; i++) { alert(tab[i]); }
Pour information je tenais a spécifier que length ne correspond pas au nombre d'élément mais à la valeur du dernière indice +1
Préférer cette fonction qui tient justement pas compte de la valeur de l'indice mais du nombre d'item
Code : 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 Array[5] 0: 1.4128035320088301 1: 1.4128035320088301 2: 0.7078125 3: 1.4128035320088301 4: 1.4128035320088301 length: 5 Array[7] 0: 1.4128035320088301 1: 1.4128035320088301 2: 0.7078125 3: 1.4128035320088301 4: 1.4128035320088301 6: 1.5384615384615385 length: 7
vive JS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function count(array){ var i = 0 var count = 0; while(array[i] != undefined && i <= array.length+1){ i++; if(typeof array[i] == undefined) continue; count++; } return count; }![]()
@callmarl. Je n'ai pas réussi à faire fonctionner ta fonction. Elle me renvoie toujours 0.
En partant de ce que tu as écrit j'ai fait ça qui donne le nombre de postes ayant une valeur <> null.
Code : 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 <script> function count(array){ var i = 0; var count = 0; for (i=0;i < array.length;i++) if(array[i] != null) count++; return count; } a = new Array(); a[5] = 4520; a[10] = 10000; a[21] = 500; alert(a); // Liste les valeurs alert(a.length); // Affiche 22 alert(count(a)); // Affiche 3 </script>
@badaze.
En-effet merci de me le signalé j'ai fais une erreur dans la comparaison, il faut tester le string, j'en ai profiter pour l'optimiser :
Code : 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 (function(){ function count(array){ var i = 0; var count = 1; while(i < array.length){ i++; if(typeof array[i] != "undefined") count++; } return count; } var test_array = new Array(); test_array[0] = "un toto"; test_array[1] = "deux toto"; test_array[3] = "trois toto"; test_array[8] = "quatre toto"; test_array[17] = "cinq toto"; console.log(test_array); console.log("length", test_array.length); console.log("count", count(test_array)); })();
Oui, dans le JS d'aujourd'hui (ES2015 et +).
Si l'on a besoin de l'index :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let tab = ["val1","val2","val3"] for ( let item of tab ){ console.log( item ); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for ( let [ i, item ] of tab.entries() ){ console.log( i, item ); }
Blog
Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
(Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)
Hey, les deux fonctions que tu as donnés servent seulement à parcourir un tableau (certe la syntaxe est nouvelle) mais elle ne compte pas le nombre d'éléments dans le tableaux.
Bonjour,
Tout dépend de si on se réfère simplement à la question initiale ou au code mis en exemple (parcours du tableau du premier index au dernier, que tous les index soient définis ou non).
Si des index ne sont pas définis, une fonction "count" du style de php ne pourrait pas être utilisée pour une boucle comme dans l'exemple.
La première réponse convenait donc bien pour l'exemple donné.
Concernant le fait de faire un "count" façon php, le "for...in" paraît adapté :
On peut ajouter un test sur les clés dans le cas où il y aurait des propriétés énumérables indésirables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nb_=0; for(i in [,,2,undefined,null,,5,]) {nb_++;} //nb_=4
Je crois qu'il faut que tu révise ce que faits la fonction count() ici, car count retourne le nombre d'élement d'un tableau (indexé ou avec tout autre type de clef) qu'il est des trou ou non dans les clef, de la meme facon que si tu cherche à obtenir le nombre d'elément d'un tableau en JS que tout les index soient définit ou non, je crois avoir dis des le début que c'est ce que fesait proprité length de l'objet Array() car length prends l'index de la dernière valeur d'un tableau et ajoute 1...
Et sinon, tu execute ce code PHP et tu verra que count($array) affiche 3 est pas 6:
Et perso je me réfère au sujet du post et à la question du premier post
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php $array = []; $array[0] = 12; $array[4] = 1; $array[5] = 2; var_dump($array); var_dump(count($array)); ?>
Il y a une grosse différence entre JS et PHP au niveau des tableaux.
En PHP si tu mets $array[1000] = 10; il n'y aura qu'un seul poste dans le tableau. Si tu fais isset($array[1]) tu obtiendras false.
En JS si tu crées l'Array array et que tu mets array(1000) = 10; les 1000 premiers postes existeront et auront la valeur null.
![]()
@callmarl :
non seulement tu déterres une discussion de plus de 8 ans mais en plus tu n'es pas capable de rajouter le compteur comme tu l'as fait dans ta fonction !(...) mais elle ne compte pas le nombre d'éléments dans le tableaux.
De plus pour faire récent, on peux faire un simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var tab=[1,,2,3,4,,,,,5]; alert(tab.length); // > 10 alert(Object.keys(tab).length); // > 5
Les joies du CSS | Réponses sur forum | Simple comme JS | Essais libres autour de l'API G$$gle Maps
✂ ---------------------------------------------
developpez.net c'est aussi :
✔ Les meilleurs cours et tutoriels pour apprendre le CSS
✔ Les meilleurs cours et tutoriels pour apprendre le (X)HTML
✔ Les meilleurs cours et tutoriels pour apprendre le JavaScript
Bonjour,
Mettre le compteur "count" dans la boucle "for...of" de danielhagnoul, c'est bien ça ?
Précisons alors qu'on obtiendra simplement la longueur "length" (à moins bien sûr d'ajouter un test sur la valeur ou l'index, mais ce n'est pas comparable au "for...in") :
C'est pour ça que je disais que l'intervention de danielhagnoul était dans la même optique que la première réponse avec "length".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 let tab = new Array(5); tab[3]="a"; let count = 0; for ( let [ i, item ] of tab.entries() ){ console.log( i, item ); /*if(tab.hasOwnProperty(i)===true)*/ count++; } console.log("nombre : "+count); //5
Bonne idée, oui.De plus pour faire récent, on peux faire un simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var tab=[1,,2,3,4,,,,,5]; alert(tab.length); // > 10 alert(Object.keys(tab).length); // > 5
Pour les rares cas où il y a des propriétés énumérables autres que les index entiers positifs classiques, on peut revenir à "for...in" (ou autre méthode équivalente s'il y a) et ajouter un test comme je disais :
Pour le test sur la clé, j'ai fait la première idée qui me venait, à voir s'il n'y a pas des cas particuliers où mon test est incorrect.
Code : 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 function count(ar_) { var i,nb_; nb_=0; for(i in ar_) { if(Math.abs(Math.floor(i))==i) //attention : à bien vérifier, voir lien ci-dessous { nb_++; } } return nb_; } var ar_=[,,1,,undefined,,null]; //3 éléments ar_.length=20; ar_.f=function(){}; //4ème élément Object.defineProperty(ar_,"test",{value:"tutu",enumerable:false}); //5ème élément console.log(count(ar_),Object.keys(ar_).length,ar_.test); //3 4 tutu
Voir ce lien pour d'autres idées :
http://stackoverflow.com/questions/1...sitive-integer
Je réponds seulement à une question, un équivalent de la fonction count(); qui je pense en C aurai également été crée en testant le typeof. M'enfin bon... D'autre pars ta proposition Object.keys(tab).length est judicieuse, et malgrès que le sujet date d'il y à 8 ans, les gens continu d'apprendre le JS et d'autre pars je suis tomber sur cet discussion en faisant une simple recherche google (fonction count() en JS) et qui plus ai dans les 3 premier lien google (d'ailleurs très bon référencement de developpez sur ce coup là).
Je n'ai pas compris ta remarque à propos de ma fonction count() étant donné quelle sort exactement le même résultat que ta proposition
Bonne continuation, je pense que les prochaine personne qui tomberont comme moi sur ce vieux sujet et chercheront des réponse, l'auront et qui plus est de façon très très moderne.![]()
Partager