Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用object.key方法时,如何获取json对象的子对象的值?_Javascript_Jquery - Fatal编程技术网

Javascript 在使用object.key方法时,如何获取json对象的子对象的值?

Javascript 在使用object.key方法时,如何获取json对象的子对象的值?,javascript,jquery,Javascript,Jquery,通过使用api并获得响应。作为响应,我得到了名为object的deals中的对象列表,这些对象的计数为19。我使用下面的函数获得了每个对象的“键”和“值”。但某些键最终是一个对象,它具有包含键和值的子对象,我尝试过,但无法访问它们。我在下面给出了一个api调用的响应片段。在这里,我可以访问索引0处于活动状态的对象,但出于业务原因,我得到了[object object],因为它里面有键和值,即“id”,我无法访问,我也想访问它们 meta: Object response: Obj

通过使用api并获得响应。作为响应,我得到了名为object的deals中的对象列表,这些对象的计数为19。我使用下面的函数获得了每个对象的“键”和“值”。但某些键最终是一个对象,它具有包含键和值的子对象,我尝试过,但无法访问它们。我在下面给出了一个api调用的响应片段。在这里,我可以访问索引0处于活动状态的对象,但出于业务原因,我得到了[object object],因为它里面有键和值,即“id”,我无法访问,我也想访问它们

 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);

        });
    }
一些代码的示例: