Javascript 从对象访问任意属性
我有一组嵌套json对象,如下所示: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
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])
});