Bonjour,
Je commence avec javascript et venant du monde C++, je galère un peu.
Le but de mon code est de faire un expand d'une chaine "5-12" en un array "5","6","7","8","9","10","11","12"
voici mon problème
Mes datas de test
Mon code expandToArray protitype de String:
Code : Sélectionner tout - Visualiser dans une fenêtre à part datatest = [{id:0,node:"0"},{id:1,node:"1-3"},{id:2,node:"5"},{id:3,node:"6-10"}]
test_1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 String.prototype.expandToArray = function () { var d = this.valueOf(); var out = ''; if (d.split('-').length == 1) return d; var p = new Number; for (var i = parseInt(d.split('-') [0]); i <= parseInt(d.split('-') [1]); i++) { out = out + i + ','; } out = out.slice(0, - 1); return out.split(','); }
ok pour les datas si ce n'est ce undefined que je n'explique pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 datatest.forEach ( function (d) {console.log(d.node)}) 0 1-3 5 6-10 undefined
l'expandToArray fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 datatest[1].node.expandToArray() ["1", "2", "3"]
expandToArray renvoie bien un Array
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 datatest[1].node.expandToArray()[0].constructor String() { [native code] } datatest[1].node.expandToArray().constructor Array() { [native code] }
encore ok
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 datatest[1].node.expandToArray().forEach (function (d) {console.log(d)}) 1 2 3
si je passe tous les enregistrement de data j'ai l"erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part datatest.forEach ( function (d) { d.node.expandToArray().forEach (function (d) {console.log(d)})})pourtant d.node est bien un String , je peu donc utiliser expandToArray, expandToArray est bien un Array je devrait pouvoir faire un forEach comme au dessus ???????Uncaught TypeError: d.node.expandToArray(...).forEach is not a function(…)
Merci cordialement.
Partager