JavaScriptdynamic对象键ejs

我真的无法find一种方式来形容这一点。 基本上我有一个数据库,可以有任意数量的不同列长度和名称的表。 我有一个表定义每个表和它的列。 我有一个查询来search这些表中的值,并使用快递将search结果和列传递给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 %> <% } %> 

其次是沿着这个方向的许多不同的尝试。 我想这个问题是不知道可能的关键名称。 我甚至不知道要寻找什么才是完全诚实的。 我的想法是画空白。

任何帮助深表感谢。

Object.keys返回一个对象中所有键的数组。 您可以使用forEach遍历这些键,通过object[key]来访问对象的值

另外,您可以在结果中使用forEach ,而不是为了保持干净。

 <% 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> <% }) %>