我有一个像这样的json:
json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }
现在,我想知道一个密钥的索引,在json中说“key2” - 这是1.有办法吗?
答案 0 :(得分:60)
为时已晚,但它可能简单实用
var json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" };
var keytoFind = "key2";
var index = Object.keys(json).indexOf(keytoFind);
alert(index);
答案 1 :(得分: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
答案 2 :(得分:9)
原则上,查找密钥的索引是错误。哈希映射的键是无序的,您永远不应该期望特定的顺序。
答案 3 :(得分: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
});
答案 4 :(得分:0)
你所追求的是经典数组工作方式中的数字索引,但是json对象/关联数组没有这样的东西。
答案 5 :(得分: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);