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
datatest = [{id:0,node:"0"},{id:1,node:"1-3"},{id:2,node:"5"},{id:3,node:"6-10"}]
Mon code expandToArray protitype de String:
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(',');
} |
test_1:
1 2 3 4 5 6
| datatest.forEach ( function (d) {console.log(d.node)})
0
1-3
5
6-10
undefined |
ok pour les datas si ce n'est ce undefined que je n'explique pas
1 2
| datatest[1].node.expandToArray()
["1", "2", "3"] |
l'expandToArray fonctionne
1 2 3 4
| datatest[1].node.expandToArray()[0].constructor
String() { [native code] }
datatest[1].node.expandToArray().constructor
Array() { [native code] } |
expandToArray renvoie bien un Array
1 2 3 4
| datatest[1].node.expandToArray().forEach (function (d) {console.log(d)})
1
2
3 |
encore ok
si je passe tous les enregistrement de data j'ai l"erreur suivante:
datatest.forEach ( function (d) { d.node.expandToArray().forEach (function (d) {console.log(d)})})
Uncaught TypeError: d.node.expandToArray(...).forEach is not a function(…)
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 ???????
Merci cordialement.
Partager