Javascript 从对象访问任意属性

Javascript 从对象访问任意属性,javascript,jquery,json,Javascript,Jquery,Json,我有一组嵌套json对象,如下所示: var obj = { name: "student", contact: { phone: "22222", fax: "33333", ... }, ... } 我有这些文本字段: <input type="text" name="name" /> <input type="text" name="contact_phone" /> <input type="text" nam

我有一组嵌套json对象,如下所示:

var obj = {
  name: "student",
  contact: {
     phone: "22222",
     fax: "33333",
     ...
  },
  ...
}
我有这些文本字段:

<input type="text" name="name" />
<input type="text" name="contact_phone" />
<input type="text" name="contact_fax" />
...
使用obj[“propertyName”]


*注意:该属性不是匿名的。如果在没有此类属性的对象上运行
obj[“propertyName”]
,它将返回未定义。

使用
obj[“propertyName”]


*注意:该属性不是匿名的。如果在没有此类属性的对象上运行
obj[“propertyName”]
,它将返回未定义。

使用
obj[“propertyName”]


*注意:该属性不是匿名的。如果在没有此类属性的对象上运行
obj[“propertyName”]
,它将返回未定义。

使用
obj[“propertyName”]



*注意:该属性不是匿名的。如果您在没有此类属性的对象上运行obj[“propertyName”],它将返回未定义。

编辑:很抱歉,我误解了这个问题。你要找的是这样的东西

var obj = {
    name: "student",
    contact: {
        phone: "22222",
        fax: "33333"
    }
};

$('#formID').("input").each(function(index) {
    fieldName = $(this).attr("name");
    var namePart = fieldName.split("_");

    var arbitraryVal = obj;
    for (var part in namePart) {
        if (arbitraryVal.hasOwnProperty(namePart[part])) {
            arbitraryVal = arbitraryVal[namePart[part]];
            continue;
        }
        arbitraryVal = null;
        break;
    }

    if (typeof $(this).val(arbitraryVal) !== 'undefined') {
        $(this).val(arbitraryVal);
    }
});
在对象中重复搜索每个名称零件。如果名称部分为
contact\u phone
它将查找
obj.contact.phone
如果它是
带有大量下划线的其他东西
它将查找
obj.something.else.with.lots.of.下划线


编辑:很抱歉我误解了这个问题。你要找的是这样的东西

var obj = {
    name: "student",
    contact: {
        phone: "22222",
        fax: "33333"
    }
};

$('#formID').("input").each(function(index) {
    fieldName = $(this).attr("name");
    var namePart = fieldName.split("_");

    var arbitraryVal = obj;
    for (var part in namePart) {
        if (arbitraryVal.hasOwnProperty(namePart[part])) {
            arbitraryVal = arbitraryVal[namePart[part]];
            continue;
        }
        arbitraryVal = null;
        break;
    }

    if (typeof $(this).val(arbitraryVal) !== 'undefined') {
        $(this).val(arbitraryVal);
    }
});
在对象中重复搜索每个名称零件。如果名称部分为
contact\u phone
它将查找
obj.contact.phone
如果它是
带有大量下划线的其他东西
它将查找
obj.something.else.with.lots.of.下划线


编辑:很抱歉我误解了这个问题。你要找的是这样的东西

var obj = {
    name: "student",
    contact: {
        phone: "22222",
        fax: "33333"
    }
};

$('#formID').("input").each(function(index) {
    fieldName = $(this).attr("name");
    var namePart = fieldName.split("_");

    var arbitraryVal = obj;
    for (var part in namePart) {
        if (arbitraryVal.hasOwnProperty(namePart[part])) {
            arbitraryVal = arbitraryVal[namePart[part]];
            continue;
        }
        arbitraryVal = null;
        break;
    }

    if (typeof $(this).val(arbitraryVal) !== 'undefined') {
        $(this).val(arbitraryVal);
    }
});
在对象中重复搜索每个名称零件。如果名称部分为
contact\u phone
它将查找
obj.contact.phone
如果它是
带有大量下划线的其他东西
它将查找
obj.something.else.with.lots.of.下划线


编辑:很抱歉我误解了这个问题。你要找的是这样的东西

var obj = {
    name: "student",
    contact: {
        phone: "22222",
        fax: "33333"
    }
};

$('#formID').("input").each(function(index) {
    fieldName = $(this).attr("name");
    var namePart = fieldName.split("_");

    var arbitraryVal = obj;
    for (var part in namePart) {
        if (arbitraryVal.hasOwnProperty(namePart[part])) {
            arbitraryVal = arbitraryVal[namePart[part]];
            continue;
        }
        arbitraryVal = null;
        break;
    }

    if (typeof $(this).val(arbitraryVal) !== 'undefined') {
        $(this).val(arbitraryVal);
    }
});
在对象中重复搜索每个名称零件。如果名称部分为
contact\u phone
它将查找
obj.contact.phone
如果它是
带有大量下划线的其他东西
它将查找
obj.something.else.with.lots.of.下划线


$(“#formID”)。查找(“输入”)。每个(函数(){
fieldName=$(this.attr(“name”);
namePart=fieldName.split(“”);
如果(namePart.length==1&&namePart[0]==name”){
$(this.val)(对象名称);
}
否则如果(名称零件长度>1){
$(this.val(obj[namePart[0]][namePart[1]]);
}
//我需要如下内容:console.log(obj.namePart[0].namePart[1])
});      


$(“#formID”)。查找(“输入”)。每个(函数(){
fieldName=$(this.attr(“name”);
namePart=fieldName.split(“”);
如果(namePart.length==1&&namePart[0]==name”){
$(this.val)(对象名称);
}
否则如果(名称零件长度>1){
$(this.val(obj[namePart[0]][namePart[1]]);
}
//我需要如下内容:console.log(obj.namePart[0].namePart[1])
});      


$(“#formID”)。查找(“输入”)。每个(函数(){
fieldName=$(this.attr(“name”);
namePart=fieldName.split(“”);
如果(namePart.length==1&&namePart[0]==name”){
$(this.val)(对象名称);
}
否则如果(名称零件长度>1){
$(this.val(obj[namePart[0]][namePart[1]]);
}
//我需要如下内容:console.log(obj.namePart[0].namePart[1])
});      


$(“#formID”)。查找(“输入”)。每个(函数(){
fieldName=$(this.attr(“name”);
namePart=fieldName.split(“”);
如果(namePart.length==1&&namePart[0]==name”){
$(this.val)(对象名称);
}
否则如果(名称零件长度>1){
$(this.val(obj[namePart[0]][namePart[1]]);
}
//我需要如下内容:console.log(obj.namePart[0].namePart[1])
});      

没有匿名财产这回事。所有属性值都有一个属性名。我想你的意思是
任意
匿名
这个问题最好的标题是什么?我不知道,你能选择另一个合适的标题吗?没有匿名财产这回事。所有属性值都有一个属性名。我想你的意思是
任意
匿名
这个问题最好的标题是什么?我不知道,你能选择另一个合适的标题吗?没有匿名财产这回事。所有属性值都有一个属性名。我想你的意思是
任意
匿名
这个问题最好的标题是什么?我不知道,你能选择另一个合适的标题吗?没有匿名财产这回事。所有属性值都有一个属性名。我想你的意思是
任意
匿名
这个问题最好的标题是什么?我不知道,你能选择另一个合适的标题吗?谢谢你的回答。但我需要从obj访问任意属性。不仅仅是
联系
。谢谢您的回答。但我需要从obj访问任意属性。不仅仅是
联系
。谢谢您的回答。但我需要从obj访问任意属性。不仅仅是
联系
。谢谢您的回答。但我需要从obj访问任意属性。不仅仅是
contac
    <form ID="formID">
        <input type="text" name="name" />
        <input type="text" name="contact_phone" />
        <input type="text" name="contact_fax" />
    </form>  

    $("#formID").find("input").each(function() {
        fieldName = $(this).attr("name");
        namePart = fieldName.split("_");
         if(namePart.length ==1 && namePart[0]=="name"){
             $(this).val(obj.name);
         }
         else if(namePart.length>1){
             $(this).val(obj[namePart[0]][namePart[1]]);
         }
        //I want something like this: console.log(obj.namePart[0].namePart[1])
    });