2016-06-29 6 views
0

Ich kann nicht scheinen, den ersten Wert innerhalb des JSON-Objekts auszuwählen.
Ich habe versucht array[0][0], aber es gibt undefined zurück.Kann ersten Wert in JSON-Objekt nicht auswählen

[ { 'Room 1': 11017, 
'Room 2': 2651, 
'Room 3': 1, 
'Room 4': 2, 
'Room 5': 1, 
'Room 6': 1, 
'Room 7': 3, 
'Room 8': 5, 
'Room 9': 3661, 
'Room 10': 2 } ] 
+2

Weil es keinen Schlüssel als '0' im Objekt gibt ... Versuchen Sie 'array [0] [' Raum 1 '] ' – Rayon

+0

Es gibt keinen" ersten "Wert * mit irgendeiner Garantie. Die Lösungen, die 'Object.keys()' verwenden, sind nicht sicher, wenn die richtige Reihenfolge erforderlich ist. –

Antwort

0

Da das Element ist ein Objekt, wird es versuchen, 0 abzurufen Eigenschaft, die undefined ist. Sie müssen also den Namen der Eigenschaft verwenden, um den Wert zu erhalten (zB: array[0]['Room 1']).


können Sie Object.keys() verwenden die Tastenanordnung dann erhalten Sie den Wert, dass die Verwendung zu erhalten. Aber es gibt keine Garantie für die Bestellung, da Object.keys() Schlüssel in beliebiger Reihenfolge zurückgibt.

var array = [{ 
 
    'Room 1': 11017, 
 
    'Room 2': 2651, 
 
    'Room 3': 1, 
 
    'Room 4': 2, 
 
    'Room 5': 1, 
 
    'Room 6': 1, 
 
    'Room 7': 3, 
 
    'Room 8': 5, 
 
    'Room 9': 3661, 
 
    'Room 10': 2 
 
}] 
 

 
console.log(
 
    array[0][Object.keys(array[0])[0]] 
 
);

UPDATE: Wenn Sie es in bestimmten Reihenfolge bekommen wollen, dann stattdessen eine verschachtelte Array.

var array = [[ 
 
    11017, 
 
    2651, 
 
    1, 
 
    2, 
 
    1, 
 
    1, 
 
    3, 
 
    5, 
 
    3661, 
 
    2 
 
]] 
 

 
console.log(
 
    array[0][0] 
 
);

+0

Beachten Sie auch Folgendes: Wenn die Elemente, auf die Sie zugreifen möchten, in einer bestimmten Reihenfolge angezeigt werden müssen, wird die Reihenfolge nicht beibehalten. Wenn die Reihenfolge wichtig ist, sollte jeder der Schlüsselwerte in einem eigenen Array-Index sein. – Nitsew

+1

_'Object.keys' gibt Schlüssel in beliebiger Reihenfolge zurück_ – Rayon

+0

Danke! Das war genau das was ich gesucht habe. – Arunesh

3

Sie müssen Schlüssel für den Zugriff auf eine Zeichenfolge verwenden, kein Index:

array[0]['Room 1']

Edit: Es gibt eine Methode Schlüssel basiert zugreifen, auf der Reihenfolge der Definition. Doch während fast alle Implementierungen von Object.keys zur Zeit in der richtigen Reihenfolge zurückzukehren, ist es nicht erforderlich, um durch die Spezifikation zu tun:

var keys = Object.keys(array[0]); 
var fifth = keys[4]; 
var value = array[0][fifth]; 
+0

Aber wie ziehe ich zum Beispiel den fünften Wert, ohne den Namen des Schlüssels zu kennen? – Arunesh

+0

Eine Änderung gemacht, die zeigt, wie das funktionieren kann. – TbWill4321

+0

Ich habe Pranavs Antwort als die endgültige Antwort markiert, da er der Erste mit der Lösung war, nach der ich gesucht habe. Aber immer noch wollen Sie danke für die Beantwortung – Arunesh

0

Sie ein Array, das 1 Objekt, die Schlüssel und keine Indizes hat . So verweisen die erste Taste:

array[0]['Room 1'] 

Wenn Sie ohne die Schlüsselnamen kennen ziehen müssen, können Sie diese über Object.keys(obj) bekommen;

var availableKeys = Object.keys(array[0]); 
var val = array[0][availableKeys[0]]; //replace availableKeys index with what you need 
1

Dies ist, weil es in dem Array ein Objekt ist. Sie können auf die Elemente eines Arrays zugreifen, indem Sie array[0] verwenden, aber für ein Objekt müsste es object.key oder object["key"] sein.

Um diese Datenstruktur dynamischer zu machen, würde ich es auf wie so empfehlen brechen:

roomNumbers = [11017, 2651, 1, 2, 1]...(and so on)

Auf diese Weise gelangen Sie eine Nummer ohne zu wissen, den Raum vor der Zeit.

Verwandte Themen