javascript for循环访问包含数字的对象名称

时间:2016-06-12 22:06:29

标签: javascript jquery datatables

我有实现子行的数据表 在我的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访问数据

你能帮我解决一下我如何循环结束以数字命名的数据?

1 个答案:

答案 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将保留您对象的值。