2016-06-29 21 views
0

jsonオブジェクトの中で最初の値を選択できないようです。
array[0][0]を試しましたが、undefinedを返します。jsonオブジェクトの最初の値を選択できません

array[0]['Room 1']

編集: 定義の順序に基づいてキーにアクセスするための方法があります

[ { '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

オブジェクトには「0」のキーがないため、配列[0] ['Room 1'] ' – Rayon

+0

*は保証されている「最初の」値*はありません。 'Object.keys()'を使った解決法は、適切な順序が必要な場合、安全ではありません。 –

答えて

0

要素がオブジェクトであるので、undefinedあるプロパティ0を取得しようとしています。したがって値を取得するにはプロパティ名を使用する必要があります(例:array[0]['Room 1'])。


あなたは、キー配列は、そのを使用して値を取得取得するObject.keys()を使用することができます。 Object.keys()は、任意の順序でキーを返すので、順序の保証はありません。

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:あなたが特定の順序でそれを取得したい場合は、代わりに、ネストされた配列を使用します。

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

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

+0

また、アクセスしようとしているアイテムが特定の順序である必要がある場合、オブジェクトは順序を維持しません。順序が重要な場合は、キー値のそれぞれが独自の配列インデックス内にある必要があります。 – Nitsew

+1

_'Object.keys'は任意の順序でキーを返します_ – Rayon

+0

ありがとう!これはまさに私が探していたものでした。 – Arunesh

3

あなたがいない、インデックス、文字列を使用してキーにアクセスする必要があります。 Object.keysのほぼすべての実装は現在、正しい順序で返しながら、しかし、それは仕様でそうするを必要ではありません。

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

しかし、キーの名前を知らずに例えば5番目の値を引き出すにはどうすればよいですか? – Arunesh

+0

どのように動作するかを示す編集を行いました。 – TbWill4321

+0

彼は私が検索した解決策の最初のものだったので、私は最終的な答えとしてPranavの答えをマークしました。 まだお返事ありがとうございます – Arunesh

0

あなたがキーではなく、インデックスを持つ1つのオブジェクトを含む配列を、持っています。だから、最初のキーを参照:

array[0]['Room 1'] 

あなたはなしプルキー名を知る必要がある場合、あなたはObject.keys(obj)経由でそれらを得ることができます。

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

それは、配列内のオブジェクトだからです。 array[0]を使用して配列の要素にアクセスできますが、オブジェクトの場合はobject.keyまたはにする必要があります。

よりダイナミックなこのデータ構造を作るために、私はそうのようにそれを壊すことをお勧めしたい:

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

そのように、あなたは事前に部屋を知らなくても番号にアクセスします。

関連する問題