JSON 循环遍历子对象
JSON looping through sub objects
我试图找出我在 JSON 和遍历子对象时遇到的问题。我以前从未使用过 JSON,所以如果语法错误导致我的问题,请告诉我。
我定义了这个 JSON 对象:
var columnData = {
"obj1":{Heading: "Test 1", Required: "True", DataTypeCode:"str", DropDownOptions: "", ColumnId: "1"},
"obj2":{Heading: "Test 2", Required: "False", DataTypeCode:"dropdown", DropDownOptions: "Alpha,Beta,Gamma,Delta", ColumnId: "2"},
"obj3":{Heading: "Test 3", Required: "True", DataTypeCode:"int", DropDownOptions: "", ColumnId: "3"}
};
我正在将其传递给执行此操作的函数:
for (var col in columnData) {
r += '<td><input type="text" name="col' + col.ColumnId + '" value="' + col.Heading + '" /></td>'
}
FireBug 中的断点确认 columnData 是有效对象,它有三个子对象,并且子对象具有预期的属性和值。但这是我在调用函数后得到的输出:
<td><input name="colundefined" value="undefined" type="text"></td>
不幸的是,我认为我缺乏 JSON 经验,这使得我尝试追踪答案的结果无法使用。如何编写一个循环来正确获取列数据的子对象?
你仍然需要列数据:
columnData[col].ColumnId
JSON 要求键值括在双引号中,您的columnData
变量是 JavaScript 对象,而不是 JSON。
话虽如此,col
是当前迭代columnData
的关键,例如 obj1
、obj2
、obj3
。如果要访问这些对象之一的属性,则需要先访问它:
var col;
for (var key in columnData) {
col = columnData[key];
r += '<td><input type="text" name="col' + col.ColumnId + '" value="' + col.Heading + '" /></td>'
}
这样做:
var key;
var col;
for ( key in columnData ) {
col = columnData[ key ];
r += '<td><input type="text" name="col' + col.ColumnId + '" value="' + col.Heading + '" /></td>';
}
另一种选择:
r += Object.keys( columnData ).map( function ( key ) {
var col = columnData[ key ];
return '<td><input type="text" name="col' + col.ColumnId + '" value="' + col.Heading + '" /></td>';
}).join( '' );
我还推荐一个模板引擎(如Handlebars.js)以满足您的HTML字符串连接需求。
相关文章:
- 循环遍历以数组为值的Javascript对象
- 如何遍历包含对象的数组-javascript
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 遍历AngularJs中的对象
- 无法在javascript中循环遍历对象数组
- 在循环遍历对象 HTMLDivElement 时,应用 ChileNode 样式 zindex 在 firefox 和
- 我想遍历一个对象数组,我不想要任何重复项
- 使用函数for循环遍历对象以更改值,然后返回结果
- 如何遍历 JSON 对象以适合 JavaScript 数组
- 循环遍历 JSON 对象
- 遍历对象会导致无限循环
- 动态对象遍历与 NodeJS
- Javascript 尝试遍历对象数组以显示其属性
- 用jQuery遍历JSON对象
- 遍历对象项
- 如何遍历javascript对象
- 继承对象.遍历所有对象
- 如何用多个对象遍历json
- 嵌套的JSON.解析错误和JS对象遍历错误没有被JS的try/catch捕获,崩溃服务器
- 对象遍历在Three.js中是什么意思?