Javascript 在使用object.key方法时,如何获取json对象的子对象的值?
通过使用api并获得响应。作为响应,我得到了名为object的deals中的对象列表,这些对象的计数为19。我使用下面的函数获得了每个对象的“键”和“值”。但某些键最终是一个对象,它具有包含键和值的子对象,我尝试过,但无法访问它们。我在下面给出了一个api调用的响应片段。在这里,我可以访问索引0处于活动状态的对象,但出于业务原因,我得到了[object object],因为它里面有键和值,即“id”,我无法访问,我也想访问它们Javascript 在使用object.key方法时,如何获取json对象的子对象的值?,javascript,jquery,Javascript,Jquery,通过使用api并获得响应。作为响应,我得到了名为object的deals中的对象列表,这些对象的计数为19。我使用下面的函数获得了每个对象的“键”和“值”。但某些键最终是一个对象,它具有包含键和值的子对象,我尝试过,但无法访问它们。我在下面给出了一个api调用的响应片段。在这里,我可以访问索引0处于活动状态的对象,但出于业务原因,我得到了[object object],因为它里面有键和值,即“id”,我无法访问,我也想访问它们 meta: Object response: Obj
meta: Object
response: Object
deals: Array[20]
0: Object
active: 1
business: Object
id: 608290.....
$.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);
});
}
下面是获取所有对象的键和值的函数
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);
});
}
我添加了这一部分,并尝试获取子对象的键和值,但它不起作用,我不知道这是一种正确的方法
$.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);
});
}
我不确定您到底需要什么,但是如果您只想访问deals数组下的对象,您可以如下修改您的函数
$.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);
});
}
function getAllobjectData(data) {
$.each(data.response.deals, function (i, deal) {
console.log("value of index " + i);
var keys = [],
values = [];
// since you are already looping through deals, no need to create another loop
console.log(deal.active); //should output 1
console.log(deal.business.id); should output 608290
// and so on...
}
我不确定您到底需要什么,但是如果您只想访问deals数组下的对象,您可以如下修改您的函数
$.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);
});
}
function getAllobjectData(data) {
$.each(data.response.deals, function (i, deal) {
console.log("value of index " + i);
var keys = [],
values = [];
// since you are already looping through deals, no need to create another loop
console.log(deal.active); //should output 1
console.log(deal.business.id); should output 608290
// and so on...
}
如果不知道对象的深度,则需要在此处使用递归
$.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);
});
}
var meta = {
response: {
deals: [
{
active: 1,
business: {
id: 608290
}
}
]
}
};
// print object
printValue(meta);
function printValue( oValue, sKey )
{
if( typeof oValue == 'object' || typeof oValue == 'array' )
{
for( i in oValue )
{
console.log( i + ' is an object' );
printValue( oValue[i], i );
}
}
else
console.log( sKey, oValue );
}
如果不知道对象的深度,则需要在此处使用递归
$.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);
});
}
var meta = {
response: {
deals: [
{
active: 1,
business: {
id: 608290
}
}
]
}
};
// print object
printValue(meta);
function printValue( oValue, sKey )
{
if( typeof oValue == 'object' || typeof oValue == 'array' )
{
for( i in oValue )
{
console.log( i + ' is an object' );
printValue( oValue[i], i );
}
}
else
console.log( sKey, oValue );
}
优雅地解决这个问题的一个方法是使用
$.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);
});
}
下面是一个函数示例,该函数将返回[keyPath,value]形式的数组:
$.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);
});
}
演示:
$.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);
});
}
优雅地解决这个问题的一个方法是使用
$.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);
});
}
下面是一个函数示例,该函数将返回[keyPath,value]形式的数组:
$.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);
});
}
演示:
$.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);
});
}
首先,你不必不断地改变你的参数。每次调用该函数时,只需使用k、v和参数k&&v,除非在另一个函数中再次使用它们,否则k&&v将应用于该函数中的任何内容
$.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);
});
}
我不确定你们是确切的JSON或预期的结果,但我通过一个小小提琴,可能有助于告诉你们如何容易深潜可以
$.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);
});
}
另外,如果您不确定某个值是否是字符串或对象,请不要忘记JavaScript的typeof方法。仅供参考,数组也可以显示为对象,如果您需要差异,请使用instanceof。尽管在整个JavaScript中可以非常类似地使用对象和数组。例如,someArray[someKey]的工作原理与someObject[someKey]的工作原理类似
$.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);
});
}
不管怎样,用长小提琴演奏:
$.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);
});
}
一些代码的示例:
首先,你不必不断地改变你的参数。每次调用该函数时,只需使用k、v和参数k&&v,除非在另一个函数中再次使用它们,否则k&&v将应用于该函数中的任何内容
$.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);
});
}
我不确定你们是确切的JSON或预期的结果,但我通过一个小小提琴,可能有助于告诉你们如何容易深潜可以
$.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);
});
}
另外,如果您不确定某个值是否是字符串或对象,请不要忘记JavaScript的typeof方法。仅供参考,数组也可以显示为对象,如果您需要差异,请使用instanceof。尽管在整个JavaScript中可以非常类似地使用对象和数组。例如,someArray[someKey]的工作原理与someObject[someKey]的工作原理类似
$.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);
});
}
不管怎样,用长小提琴演奏:
$.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);
});
}
一些代码的示例: