30

私は次のようなjsonを持っています:

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

さて、キーのインデックスを知りたいのですが、json で "key2" と言うと、これは 1 です。方法はありますか?

4

6 に答える 6

110

手遅れですが、シンプルで便利かもしれません

var json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" };
var keytoFind = "key2";
var index = Object.keys(json).indexOf(keytoFind);
alert(index);
于 2013-10-16T05:59:49.243 に答える
13

オブジェクトキーに数値インデックスは必要ありませんが、他の多くの人がそう言っています。

実際の答えは次のとおりです。

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
于 2013-03-05T08:11:35.833 に答える
10

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

于 2013-03-05T07:59:02.347 に答える
5

あなたが持っているのは、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
});
于 2013-03-05T07:56:23.457 に答える
0

あなたが求めているのは、古典的な配列が機能する方法の数値インデックスですが、json オブジェクト/連想配列にはそのようなものはありません。

「key1」、「key2」自体がインデックスであり、それらに関連付けられた数値インデックスはありません。そのような機能が必要な場合は、それらを自分で関連付ける必要があります。

于 2013-03-05T07:59:21.240 に答える
-1

これを試して

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);
于 2013-03-05T08:07:52.627 に答える