2013-03-05 11 views
9

でキーのインデックスを取得:私はそうのようなJSON持つJSON

json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" } 

が、私はキーのインデックスを知ってほしい、JSONで「キー2」を言う - 1であることはあります方法?

答えて

36

その、それはシンプルかつ有用である可能性がある

var json = '{ "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }'; 
var keytoFind = "key2"; 
var index = Object.keys(json).indexOf(keytoFind); 
alert(index); 
+0

watevr2を含むKEYを探したい場合はどうすればいいですか? –

+0

@ TusharShuklaその値でキーを見つけるには反復が必要です。こちらを参照してください[リンク](http://stackoverflow.com/questions/9907419/javascript-object-get-key-by-value) – Gowsikan

+0

それは安定しますか? –

4

JSONのシリアル化されたjavascriptオブジェクトを表す文字列があります。そのプロパティをループする前に、javascriptオブジェクトを逆シリアル化する必要があります。それ以外の場合は、この文字列の個々の文字をループします。

var resultJSON = '{ "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }'; 
    var result = $.parseJSON(resultJSON); 
    $.each(result, function(k, v) { 
     //display the key and value pair 
     alert(k + ' is ' + v); 
    }); 

または単に:

arr.forEach(function (val, index, theArray) { 
    //do stuff 
}); 
+0

JSONが文字列であるとは言いませんでしたか?実際には正反対ですか? – h2ooooooo

7

原則的には、それがキーのインデックスを探すために間違っです。ハッシュマップのキーは順序付けされていないため、特定の順序を期待するべきではありません。

0

あなたがしているのは、古典的な配列の動作の数値インデックスですが、jsonオブジェクト/結合配列ではそのようなことはありません。

「key1」、「key2」のテーマはインデックスであり、数値インデックスは関連付けられていません。あなたがそのような機能を持っていたいなら、あなたはそれを自分でアシストする必要があります。

0

この

var json = '{ "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }'; 
json = $.parseJSON(json); 

var i = 0, req_index = ""; 
$.each(json, function(index, value){ 
    if(index == 'key2'){ 
     req_index = i; 
    } 
    i++; 
}); 
alert(req_index); 
+2

これはjQueryライブラリを必要とします。 –

11

を試してみてくださいあなたは、オブジェクトキーの数値インデックスは必要ありませんが、多くの人はあなたにそれを言いました。

ここでは、実際の答えです:あなたはおそらくちょうど私がこの機能で使用したのと同じループを探しているので、あなたがオブジェクトを通過することができますが

var json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }; 

console.log(getObjectKeyIndex(json, 'key2')); 
// Returns int(1) (or null if the key doesn't exist) 

function getObjectKeyIndex(obj, keyToFind) { 
    var i = 0, key; 

    for (key in obj) { 
     if (key == keyToFind) { 
      return i; 
     } 

     i++; 
    } 

    return null; 
} 

for (var key in json) { 
    console.log(key + ' is ' + json[key]); 
} 

どの手遅れになる出力

key1 is watevr1 
key2 is watevr2 
key3 is watevr3 
+1

さて、私はjsonを反復するループを探していませんでした。実際には、私のコードの一部で、私はjsonを反復して配列を作成します。別のコードでは、私はjsonのキーを持っています。私は配列を持っています。このキーに関連する配列要素を見つける必要があります。私は奇妙な立場にいると分かり、混乱するかもしれませんが、私が探していたものを手に入れました。ほんとありがと! – shreyj

関連する問題