我有实现子行的数据表 在我的json对象中,我有20个名称的列,名为(name1,name2,nameX ... name20) 我正在用html创建子行,我想循环遍历所有名称,如果它不是null / empty,则用它添加div
function format_details ( d ) {
var $part1 = ' some HTML code';
var $part2;
for ( var i = 1; i < 21; i++) {
var $name = "d.name" + i.toString();
var $compare=this[$name];
if ($compare.length != 0 ) {$part2 += '<div class="desc_wrapper"><div class="desc">'+ this[$name] + '</div></div>';}
}
var $part3 = 'some HTML again';
var $result = $part1.concat($part2,$part3);
return $result;
如果我使用d.name1它可以工作但当然我有20次相同的名称,但如果创建对象名称并使用此{$ name]或如果我使用d.name [i]或d.name +我不能从我的json访问数据
你能帮我解决一下我如何循环结束以数字命名的数据?
答案 0 :(得分:2)
要使用动态名称访问对象属性,请使用方括号并将名称作为字符串提供。以下是等效的:
d.name1
d["name1"] // note the quotes, the property name is a string
d["n" + "a" + "m" + "e" + "1"]
d["name" + i] // assuming i is 1
var n = "name" + i;
d[n]
d[someFunc()] // assuming someFunc() returns the string "name1"
所以在你的代码中,替换这一行:
var $name = "d.name" + i.toString();
用这个:
var $name = d["name" + i];
我不确定您尝试使用this[$name]
做什么 - 如果这只是尝试获取动态属性名称,那么您可以删除它并使用{{1} }直接因为(在我建议的更改后)$name
将保留您对象的值。