我正在使用Json Object:
var someobj = {
'key':'value',
'key':'value',
'objectkey':{'key':'value','key':'value'}
}
迭代时,我想将console.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);
答案 0 :(得分:0)
请试试这个:
<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>
答案 1 :(得分:0)
通常,您可以通过以下方式迭代对象的属性:
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]);
}
}
}
};