2015-12-13 55 views
1

我真的找不到一种方法来描述这一点。基本上,我有一个数据库,可以有任意数量的不同列长度和名称的表。我有一个表定义每个表和它的列。我有一个查询来搜索这些表中的值,并使用express将搜索结果和列传递给ejs。我需要的是回应结果。我确实有:JavaScript动态对象键ejs

<div class="row"> 
<table> 
    <thead> 
     <tr> 
      <% columns.forEach(function(column) { %> 
       <th><%= column %></th> 
      <% }); %> 
     </tr> 
    </thead> 
    ... 

这会正确输出表头中列的名称。我不能为了我的生活而弄清楚如何打印实际结果。我尝试了许多不同的方法,但我所得到的都是未定义的或[Object object]。我有这个目前:

<tbody> 
     <% for(var r = 0; r < results.length; r++) { %> 
      <tr> 
       ... need to access column here ... 
      </tr> 
     <% } %> 
    </tbody> 

我第一次尝试下面(内侧上面)

<% for(var key in Object.keys(results[r])) { %> 
    <%= results[r].key %> 
<% } %> 

接着沿此的线,所以许多不同的尝试。我想这个问题不知道可能的关键名称。我甚至不知道要寻找什么,要么完全诚实。我的想法是空白。

任何帮助,非常感谢。

回答

1

Object.keys返回的对象的所有键的阵列。您可以使用forEach遍历这些键,通过object[key]

还访问对象的值,你可以使用forEach你的结果,而不是for保持干净的东西。

<% results.forEach(function (result) { %> 
    <tr> 
    <% Object.keys(result).forEach(function (key) { %> 
    <td><%= result[key] %> </td> 
    <% }) %> 
    </tr> 
<% }) %> 

现代浏览器都箭头现在,所以这可以简化一点:

<% results.forEach(result => { %> 
    <tr> 
    <% Object.keys(result).forEach(key => { %> 
    <td><%= result[key] %> </td> 
    <% }) %> 
    </tr> 
<% }) %>