Javascript:获取JSON数组中的所有现有密钥

我有一个如下的JSON数组:

var jsonArray = [{"k1":"v1"},{"k2":"v2"},{"k3":"v3"},{"k4":"v4"},{"k5":"v5"}] 

我不知道这个数组中存在哪些键。 我想从数组中获取所有现有密钥。

它可能是这样的:

 for(i=0;i<jsonArray.lenght;i++){ // something like- key = jsonArray[i].key // alert(key); } 

请告诉我获取Json数组中所有键的方法或方法。

问候

试试这个:

 var L = jsonArray.length; for (var i = 0; i < L; i++) { var obj = jsonArray[i]; for (var j in obj) { alert(j); } } 

我还对你当前的代码做了一些修改(比如length缓存)。

你为什么不用

 var jsonObject = {"k1":"v1","k2":"v2","k3":"v3","k4":"v4","k5":"v5"} 

而不是你的

 var jsonArray = [{"k1":"v1"},{"k2":"v2"},{"k3":"v3"},{"k4":"v4"},{"k5":"v5"}] 

? 然后解决方案就这么简单: Object.keys(jsonObject)

循环遍历对象属性,并选择第一个“真实”属性(给定您的数据模式应该是唯一真实的一个)。

 var jsonArray = [{"k1":"v1"},{"k2":"v2"},{"k3":"v3"},{"k4":"v4"},{"k5":"v5"}] for (var i = 0; i < jsonArray.length; i++) { for (var prop in jsonArray[i]) { if (jsonArray[i].hasOwnProperty(prop)) { var key = prop; break; } } alert(key); } 

请参见如何遍历js对象中的项目? 为了解释为什么在这里使用hasOwnProperty很重要。

试试这个:

 jsonArray.reduce(function(keys, element){ for (key in element) { keys.push(key); } return keys; },[]); 

这也适用于数组对象中的多个键。

如果您支持没有reduce和map的旧浏览器,请考虑使用垫片 。

 var id = { "object": "page", "entry": [{ "id": "1588811284674233", "time": 1511177084837, "messaging": [{ "sender": { "id": "1393377930761248" }, "recipient": { "id": "1588811284674233" }, "timestamp": 1511177084553, "message": { "mid": "mid.$cAAX_9pLcfu1mCnGmiVf2Sxd2erI2", "seq": 1882, "text": "a" } }] }] }; function getKey(obj, data) { //@author dvdieukhtn@gmail.com var data = data || []; if (obj) { var keys = Object.keys(obj); for (var pos in keys) { console.log(); data.push(keys[pos]); if ((obj[keys[pos]].constructor === Array)) { for (var i = 0; i < obj[keys[pos]].length; i++) { getKey(obj[keys[pos]][i], data); } } else if (obj[keys[pos]].constructor === Object) { getKey(obj[keys[pos]], data); } } return data; } } console.log(getKey(id));