Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 将嵌套对象数据添加到窗体_Javascript_Jquery_Recursion - Fatal编程技术网

Javascript 将嵌套对象数据添加到窗体

Javascript 将嵌套对象数据添加到窗体,javascript,jquery,recursion,Javascript,Jquery,Recursion,我正在从可以是多层的对象向表单添加数据 表格示例 <form id="myForm"> <input name="foo" /> <input name="bar" /> </form> var myData = { level1: { foo: 'hello', level2: { bar: 'greetings' } } } 将数据添加到

我正在从可以是多层的对象向表单添加数据

表格示例

<form id="myForm">
    <input name="foo" />
    <input name="bar" />
</form>
var myData = {
    level1: {
        foo: 'hello',
        level2: {
            bar: 'greetings'
        }
    }
}
将数据添加到表单中

$.each(data, function (i, e) {
    var field = $('[name="' + i + '"]');
    if (field.is('input')) field.val(e);
});
现在很明显这行不通,所以我有两个选择

A) 展平对象

var myResult = {
  level1 : '',
  foo : 'hello',
  level2 : '',
  bar : 'greetings'
}
B) 递归地遍历对象

但我认为即使要做A,我也需要做B。所以B是更快的选择。现在,我如何递归地遍历一个对象?我一直在研究这个fiddle,并试图实现一个递归for循环,但该循环没有从object属性中提取值。我非常喜欢使用jq$。每个,但我不知道它在这种情况下是否有效


这里有一个迭代器函数来获取该键值:

var myData={
第1级:{
福:你好,
第2级:{
酒吧:“问候”
}
}
}
函数读取器(对象,输入键){
for(对象中的变量键){
if(对象类型[键]=“对象”){
返回读取器(对象[键],输入键);
}否则{
如果(键==输入键){
返回对象[键];
}
}
}
}
$(函数(){
$(“输入[type=text]”)。每个(函数(ele){
var key=$(this.attr(“name”);
$(this).val(读取器(myData,key));
});
});


为什么将其从已接受答案中删除@t意外事件。感谢您的回答,这是我的实现结果(我希望数据成为这里的驱动程序)