2017-12-11 4 views
0

ich wie ein Objekt habenDrucken Sie den Schlüssel und den Wert aus einem Array

let sample = {a:5, b:3 , c:7, d:8} 
Object.entries(sample) 

Jetzt werde ich eine Reihe von Länge erhalten vier

[ [a,5], [b,3], [c,7] , [d,8] ] 

Wo der Schlüssel und Wert als Array Werte sein .

Jetzt muss ich

  • die Werte als Druck a den Wert 5
  • hält
  • b den Wert 3
  • C, um den Wert 7
  • hält hält
  • d den Wert 8

hält

Antwort

1

Ich fand die Lösung:

let sample = {a:5, b:3, c:7, d:8}; 
for (const [key,value] of Object.entries(sample)) { 
    // return whatever you need 
    console.log(`${key} holds the value ${value}`) 
} 

Ich hoffe, dass dies das Problem lösen wird

+0

Ja, das ist der richtige Ansatz. – Bergi

1

Die Antwort, die Sie geschrieben haben, ist technisch korrekt, aber es wird nur in den modernsten Browsern funktionieren.

Zum Beispiel wird Object.entries von keiner Version von IE unterstützt. Weder ist for...of. Und die let statement erfordert mindestens IE11.

Wenn Sie Ihren Code in älteren Browsern verwenden möchten, sollten Sie z. Object.keys anstelle von Object.entries, forEach anstelle von ... von und var statt zu lassen.

Dieser Code wird das gleiche tun, aber auch fein in IE9 laufen:

var sample = {a:5, b:3 , c:7, d:8}; 
 
var keys = Object.keys(sample); 
 

 
keys.forEach(function(key){ 
 
    console.log(key + " holds the value " + sample[key]); 
 
});

Und selbst wenn die oben genannten Code zu modern für Ihren Geschmack ist, können Sie für die gehen folgende Vorgehensweise:

var sample = {a:5, b:3 , c:7, d:8}; 
 

 
for (var key in sample) { 
 
    console.log(key + " holds the value " + sample[key]); 
 
}

Dieser Code sollte auch in IE6 funktionieren!

+0

Aber 'Object.keys' und' forEach' und String-Interpolation funktionieren auch nicht in älteren Browsern ... Warum sollte man nicht einfach 'for (var key im Beispiel) {console.log (key +" enthält den Wert "+ sample) [key])} 'loop – Bergi

+0

@Bergi: Danke für Ihre Korrekturen. Ich hatte die String-Interpolation vergessen, aber meinen Code entsprechend korrigiert. Ich fügte auch eine zweite Version hinzu, die auf 'for ... in' basiert und auch in IE6 funktionieren sollte. Der Grund, warum ich "for ... in" in meiner ersten Antwort nicht erwähnt habe, ist, dass ich gelernt habe, es als Konsequenz von [** dieses Problem **] zu vermeiden (https://blog.javascripting.com)/2014/09/19/wann-sollte-javascript-entwickler-verwenden-hasownproperty /). Und da wir IE <9 nicht bei meinem Arbeitgeber unterstützen müssen, habe ich 'Object.keys' +' forEach' als Alternative zu 'for ... in' +' obj.hasOwnProperty' in allen verwendet mein Code. –

+0

Ich stimme nicht zu. Wir sollten annehmen, dass "Object.prototype" nicht mit aufzählbaren Eigenschaften erweitert wird, so wie wir davon ausgehen, dass die nativen Methoden das tun, was wir erwarten. [obj.hasOwnProperty (...) 'ist falsch und sollte nicht verwendet werden (https://stackoverflow.com/a/45014721/1048572). – Bergi

Verwandte Themen