通过使用 api 并获得响应。作为响应,我得到了名为对象的交易中的对象列表,这些对象的计数是 19。我使用下面的函数来获取“键”和“值” ' 每个对象的。但是一些最终是对象的键有包含键和值的子对象,我已经尝试过但我无法访问它们。我在下面给出了 api 调用的响应片段。在这里我可以访问索引 0 处的对象处于事件状态但对于业务我得到了 [object object] 因为它里面有键和值,即“id”,我无法访问,我也想访问它们。
meta: Object
response: Object
deals: Array[20]
0: Object
active: 1
business: Object
id: 608290.....
下面是获取所有对象的键和值的函数
function getAllobjectData(data) {
$.each(data.response.deals, function (i, deals) {
console.log("value of index " + i);
var keys = [],
values = [];
$.each(deals, function (key, value) {
keys.push(key);
values.push(value);
var subkey = [],
subvalue = [];
这部分我添加并尝试获取子对象键和值,但它没有用,我不知道这是正确的方法。
$.each(key, function (subkey, subvalue) { <-------------
alert(subkey + ": " + subkey); -
}); -
console.log('subkey ' + (i + 1) + ' is ' + subkey); -
console.log('subvalue ' + (i + 1) + ' is ' + subvalue); -
-----------------------------------------------------------------------------
});
console.log('keys ' + (i + 1) + ' is ' + subkey);
console.log('values ' + (i + 1) + ' is ' + subvalue);
});
}
最佳答案
优雅地解决这个问题的一种方法是使用 recursion .
这是一个函数示例,它将以 [keyPath, value]
的形式返回数组数组:
演示:http://jsfiddle.net/RQuBD/1/
function collectSimpleValues(data, values, path) {
path = path || '';
values = values || [];
Object.keys(data).forEach(function (k) {
var p = path + k, v = data[k];
if (typeof v === 'object') collectSimpleValues(v, values, p + '.');
else values.push([p, v]);
});
return values;
}
关于javascript - 如何在使用 object.key 方法时获取 json 对象的子对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564606/