2016-03-19 16 views
2

Ich lerne JavaScript aus einem Buch mit dem Titel ‚Eloquent Javascript‘Eloquent Javascript: Übung: Eine Liste

Ich versuche, um die Übung zu lösen hier beschrieben: http://eloquentjavascript.net/04_data.html#h_nSTX34CM1M

ich, dass dieser Code arbeiten, verwaltet funktioniert:

function arrayToList(array) { 

    var list = null; 

    for (var i = array.length - 1; i >= 0; i--) 
    list = { 
     value: array[i], 
     rest: list 
    }; 
    return list; 
} 

console.log(arrayToList([1, 2, 3])); 

Ergebnis: {Wert: 1, Rest: {Wert: 2, Rest: {Wert: 3, Rest: null}}}

so weit, so gut, und nach t o das Buch das ist die richtige Lösung. ABER!

Wenn ich versuche, die gleiche Sache, sondern mit einem längeren Array ausgeführt werden soll, lassen Sie uns sagen:

console.log(arrayToList([1, 2, 3, 4, 5])); 

Das Ergebnis ist: {Wert: 1, Rest: {Wert: 2, Rest: {Wert: 3, Ruhe: [Objekt]}}}

Warum ist das? Ist mein Code falsch?

+0

Führen Sie dies in nodejs aus? Oder eine Browserkonsole? – Bergi

+0

nodejs in der Windows-Powershell –

+0

Ja, sieht so aus :-) Knoten ist in der Erweiterung der Objekte beschränkt, die es druckt; In einem Browser/Debugger können Sie diese typischerweise interaktiv erweitern. – Bergi

Antwort

4

Es ist nichts falsch mit einem längeren Array. console.log() ist eine nicht standardmäßige browserspezifische Implementierung und einige Implementierungen legen fest, wie viele Ebenen der Objektverschachtelung angezeigt werden. Wenn sie dieses Level erreichen, zeigen sie einfach [Object] an, anstatt in die Karte hineinzuspringen, um eine tiefere Verschachtelung anzuzeigen.

Wenn Sie tatsächlich einen Haltepunkt setzen und Ihre Variable im Debugger untersuchen, werden Sie sehen, dass Sie die verschachtelten Ebenen so tief wie möglich erweitern und alles sehen können.

Oder könnten Sie dies tun:

console.log(JSON.stringify(arrayToList([1, 2, 3, 4, 5]))); 

manuell das Ganze in eine Zeichenfolge zu konvertieren, bevor console.log() auf ihn verwenden.

+0

Sie schlagen mich einfach +1 –

+0

OP könnte 'JSON.stringify' das Ergebnis, um das größere Bild zu erhalten. – Andy

+0

Oh! So einfach, nicht wahr? Vielen Dank! –

Verwandte Themen