2013-02-10 11 views
17

でJSオブジェクトの要素を取得します。それでは、私は私のオブジェクトインデックス[OK]を

myobj = {"A":["B"], "B":["C"]} 

を持っていると私はそれのうち最初の要素を取得したいとしましょう。私はそれがAのインデックスを持つBを返すようにしたいと思います。私はどのようにmyobj[0]の線に沿って何かをして出すことができますB.

+0

あなたはできないのを助けることを願っています。オブジェクトに格納されているプロパティの順序の保証はありません。 –

+1

あいまいではない例を構成できますか?ここで重要なのは「B」ですか? – Eric

答えて

14

JSオブジェクト一切定義された順序を持っていない、彼らは(定義上)キーと値のペアのソートされていないセットです。 "最初に" あなたは "辞書順で最初の" 意味

によって場合は、しかし、使用することができます。その後、

var sortedKeys = Object.keys(myobj).sort(); 

と使用:

var first = myobj[sortedKeys[0]]; 
+1

うーん...字句はどういう意味ですか? – ChapmIndustries

+1

@ChapmIndustries字句はアルファベット順に似ていますが、デフォルトでは小文字の前に大文字を使用していますが、各文字のASCII値を参照するだけです。 – Alnitak

+0

"字句"は "辞書編集"にする必要があります – Barmar

-2
myobj.A 

------ - または----------

myobj['A'] 

あなたは「B」を取得します

+4

しかし、OPのポイントは、プロパティ名「A」がわからないことです。 –

-2

特定の注文が必要な場合は、オブジェクトではなく配列を使用する必要があります。オブジェクトには定義された順序はありません。

たとえば、アレイを使用して、あなたはこれを行うことができます:

var myobj = [{"A":["B"]}, {"B": ["C"]}]; 
var firstItem = myobj[0]; 

その後、あなたはこのmyobj [0]配列内の最初のオブジェクトを取得するために使用することができます。

それとも、あなたが何をしようとして応じて:

var myobj = [{key: "A", val:["B"]}, {key: "B", val:["C"]}]; 
var firstKey = myobj[0].key; // "A" 
var firstValue = myobj[0].val; // "["B"] 
34

私はそれが後半の答えだけど、私は、これはOPのために尋ねていると思います。

myobj[Object.keys(myobj)[0]]; 
+0

"プロパティの順序は、オブジェクトのプロパティを手動でループすることによって与えられる順序と同じです。この[リンク](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)に示されているように –

+1

これを使用する人は誰でも、すべてではなくブラウザはObject.keysをサポートします。ここをクリック - http://kangax.github.io/compat-table/es5/#test-Object.keys。 MDNはhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keysのためのployfillも提供しています。 – jeanfrg

0
var myobj = {"A":["B"], "B":["C"]}; 

var keysArray = Object.keys(myobj); 

var valuesArray = Object.keys(myobj).map(function(k) { 

    return String(myobj[k]); 

}); 

var mydata = valuesArray[keysArray.indexOf("A")]; // B 
-1

私は確実に、

$.each(myobj, function(index, value) { 

    console.log(myobj[index]); 

    )}; 
+0

閉じ括弧と中カッコを切り替えました! – Syraxis