如何在将在Pouchdb中引用JSON名称的函数中传递Array值?

时间:2015-07-12 02:03:01

标签: javascript json pouchdb

当我像这样调用下面的函数时:

showTableTest("db", "testTable", "action", "context","projectName")

我想在函数中使用参数[2]作为JSON名称(即“action”)。

直接引用名称时如下:

 genTable+="<td>" + result.rows[q].doc.action + "</td>";

返回正确的值

然而,当我像这样引用它们时:

  genTable+="<td>" + result.rows[q].doc.column[2] + "</td>";

我收到以下错误:

 Uncaught (in promise) TypeError: Cannot read property '2' of undefined

如何正确传递此值?

function showTableTest (dbName,idOfTable) {
    var column = arguments;  
    var argNum = arguments.length;
    var genTable = "<table class='responsive'>";
    genTable+= "<tr>";
    for (var i=2,  tot=argNum; i < tot; i++) {
      genTable+= "<th>" + arguments[i] + "</th>"; 
    }
    genTable+= "</tr>";
    db.allDocs({include_docs: true, attachments: true}).then(function (result) {
      for (var q=0,  tot=result.rows.length; q < tot; q++) {
        genTable+="<tr>";
        for (var c=2,  all=argNum; c < all; c++) {
          genTable+="<td>" + result.rows[q].doc.action + "</td>";
          genTable+="<td>" + result.rows[q].doc.column[2] + "</td>";
        }
        genTable+="</tr>";
      } 
      genTable+="</table>";
      document.getElementById(idOfTable).innerHTML = genTable;
   });
  }

1 个答案:

答案 0 :(得分:0)

有一个演示如何通过code snippet中的密钥从json调用,所以你的代码

genTable+="<td>" + result.rows[q].doc.column[2] + "</td>";

被改为

genTable+="<td>" + result.rows[q].doc[column[1]] + "</td>";

showTableTest("name", "id");
function showTableTest(dbName, idOfTable) {
    var column = arguments;
    var argNum = arguments.length;
    console.info(column[1]);//your idOfTable index is No 1
}

result.rows[q].doc[column[2]]

column[2]是关键,你可以像这样打电话