Ich habe ein Array, dem ich Objekte hinzufüge. Ich möchte die Anzahl der Objekte, die dem Array hinzugefügt werden, mithilfe einer Nummer steuern.

for (var i = 0; i < numberOfCountries; i++) {
    chartArray[i] = obj[i];
}

Ich versuche das zu bekommen:

    chartArray[0] = obj0;
    chartArray[1] = obj1;
    chartArray[2] = obj2;
    chartArray[3] = obj3;
    chartArray[4] = obj4;
    chartArray[5] = obj5;
0
Bwyss 2 Dez. 2013 im 17:55

5 Antworten

Beste Antwort

Angenommen, die Variablen obj sind im Fensterbereich verfügbar:

for (var i=0; i<numberOfCountries; i++) {
    chartArray[i] = window["obj"+i];
}
1
CodingIntrigue 2 Dez. 2013 im 13:59

Du kannst das:

var char = new Array();
for (var i = 0; i < number; i++)
{
    char.push(obj[i]);
}
-1
Shryme 2 Dez. 2013 im 13:57

Ich habe wirklich das Gefühl, dass Sie die falsche Frage stellen (siehe https: //meta.stackexchange) .com / Fragen / 66377 / Was-ist-das-XY-Problem). Die Objekte, auf die Sie sich beziehen, sollten sich in erster Linie in einem Array befinden

0
Community 20 März 2017 im 10:29

Vielleicht willst du das?

for (var i=0; i<numberOfCountries; i++) {
    chartArray.push(this["obj"+i]);
}
1
akaRem 2 Dez. 2013 im 13:59

Angenommen, der Index der for-Schleife ist 0:

Sie haben diesen Code:

chartArray[0] = obj[0];

In diesem Code versuchen Sie, ein Element eines Arrays mit dem Namen "obj" mit dem Index 0 in Ihr chartArray im Index 0 zu verschieben.

Um das zu tun, was Sie wollen, müssen Sie den Namen des Objekts auflösen, indem Sie dem Wort "obj" eine fortlaufende Nummer hinzufügen, damit Sie eval () verwenden können.

Versuchen:

for (var i = 0; i < numberOfCountries; i++) {
   //for debug uncomment nexr line 
   //console.log("name:","obj"+i,"eval:",eval("obj"+i));
   if(typeof eval("obj"+i) !== "undefined") return chartArray.push(eval("obj"+i));
}

Wenn das Objekt "obj" + i nicht definiert ist, fährt die Schleife mit dem nächsten "Land" fort, ohne es Ihrem Array hinzuzufügen.

Tschüss.

0
Frogmouth 2 Dez. 2013 im 14:08