2013-03-05 56 views
9

我有一個JSON像這樣:得到一個關鍵的指標在JSON

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

現在,我想知道的一個關鍵的指標,以JSON說「KEY2」 - 這是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,該怎麼辦? – 2016-07-02 17:19:16

+0

@TusharShukla它需要迭代通過它的值來查找關鍵字。請參閱此鏈接(http://stackoverflow.com/questions/9907419/javascript-object-get-key-by-value) – Gowsikan 2016-12-07 07:09:50

+0

它是否穩定? – 2018-01-11 22:40:52

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 2013-03-05 08:16:42

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庫。 – 2013-03-05 08:13:42

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 2013-03-06 10:34:12

相關問題