迭代对象内部的对象

Iterate object inside object

本文关键字:对象 内部 迭代      更新时间:2023-09-26

我正在使用 Json Object:

var someobj = {
 'key':'value',
 'key':'value',
 'objectkey':{'key':'value','key':'value'}
}

迭代时,我希望在控制台中得到结果.log如下所示:

KEY: key && VALUE: value
KEY: key && VALUE: value
OKEY: key && OKEYVALUE: value

在迭代时,我只得到第一级,我似乎无法将其放入作为对象的值中。我想某种长度可以工作:

EDIT2:现在有了这个内部循环,它会迭代,我得到外部值的字母,内部值被完全记录下来。

var registration_form = {
    'registration_form':{
        'Display Name':'input',
        'Username':{'inpute':'text','id':'some_id'},
        'Password':'input',
        'Email':'input',
        'Captcha':'input'
    }
};
function iterateNodes(data) {
    for (var key in data){
        var obj = data[key];
        for(var prop in obj){
            if(obj.hasOwnProperty(prop)){
                var inobj = obj[prop];
                for(var prop in inobj){
                    console.log(inobj[prop])
                }
            }else{
                console.log(obj)
            }
        }
    }
}
iterateNodes(registration_form);

通常,您可以通过以下方式迭代对象的属性:

for (var k in o) {
    if (o.hasOwnProperty(k)) {
        console.log('k: ' + k + ', v: ' + o[k])
    }
}

因此,您可以使用递归来更深入地了解一个级别

function hasproperty(o) {
    if (typeof o === 'object') {
        for (var k in o) {
            if (o.hasOwnProperty(k)) {
                return true;
            }
        }    
    }
    return false;
};
function iterate(o) {
    for (var k in o) {
        if (o.hasOwnProperty(k)) {
            if (hasproperty(o[k])) {
                console.log('within ' + k);
                iterate(o[k]);
                console.log('exit ' + k);
            } else {
                console.log('K: ' + k +  ', V:' + o[k]);
            }
        }
    }
};

请尝试一下:

<script
    src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
  var someobj = {
      'key1':'value1',
      'key2':'value2',
      'objectkey3':{'key01':'value01','key02':'value02'}
     };
  jQuery.each(someobj, function(i, val) {
        if (typeof val == 'string'){
            console.log("key : "+i+" value: "+val);
        }else{
            jQuery.each(val, function(j, val2) {
                console.log("key : "+j+" value: "+val2);
            });
        }
      });
</script>