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
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"}]
Mon code expandToArray protitype de String:
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(',');
}
test_1:
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
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
datatest[1].node.expandToArray()
["1", "2", "3"]
l'expandToArray fonctionne

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] }
expandToArray renvoie bien un Array

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
encore ok

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)})})
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.