Javascript使用变量属性名称来赋值

时间:2016-03-02 16:32:24

标签: javascript jquery

所以我要构建将从我的数据库中填充的动态表,但是需要动态分配有关这些表的所有内容。因此,创建表的函数将不知道有多少cols,或者每个col中的数据类型是什么,但我已经解决了所有问题。

现在使用对象填充数据。

创建行时,我调用以行的名称作为属性名称填充对象。保持不变非常重要,因为表将使用这些属性名称来关联数据所属的列。

row.id          = dataObj[i].id;
row.timeType    = dataObj[i].timeType;
row.existing    = dataObj[i].existing;
row.upgrade     = dataObj[i].upgrade;
row.childNode   = dataObj[i].childNode;
row.budget      = dataObj[i].budget;

所以'行'是我的对象,你可以看到我正在使用' i'作为循环中的迭代器,在将所有数据传递给表之前填充所有数据。

这里的关键...因为这个表函数应该能够接受任何数据集,所以程序永远不会知道属性名称是什么。我确实已经存储了一个数组,其中包含从数据库中检索到的所有属性名称,但JS不会让我这样做:

rows = [];
nameOfCols = ['id','timeType','existing','upgrade','childNode','budget'];  //Populated from DB
for (i=0;i<numRows;i++) {                                                  //Iterate over each row of data returned
  for (j=0;j<numCols;j++) {                                                //Iterate over each Col for curr data row
    row.nameOfCols[j] = dataObj[i].nameOfCols[j];
  }
  rows.push(row);
}

使用变量属性名称将数据分配给对象。你怎么解决这个问题?

row.nameOfCols [j],因为属性名称不能是变量。

所以你最终可以看到&#39;行&#39;是一个对象数组。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

要访问定义为变量的属性access it with []

router.post('/like', function (req, res) {
}

router.post('/dislike', function (req, res) {
}

答案 1 :(得分:0)

试试这个:

rows = [];
nameOfCols = ['id','timeType','existing','upgrade','childNode','budget'];  //Populated from DB
for (i=0;i<numRows;i++) {
  var row = {};                                                  //Iterate over each row of data returned
  for (j=0;j<numCols;j++) {                                                //Iterate over each Col for curr data row
    row.nameOfCols[j] = dataObj[i][nameOfCols[j]];
  }
  rows.push(row);
}

注意:dataObj[i][nameOfCols[j]]会在尝试使用该属性名称访问nameOfCols[j]之前评估dataObj。在访问属性名称之前,点语法不会评估nameOfCols[j]

由于某种原因,array[var]语法评估var,而array.var实际上是array["var"]