所以我要构建将从我的数据库中填充的动态表,但是需要动态分配有关这些表的所有内容。因此,创建表的函数将不知道有多少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;是一个对象数组。
任何帮助表示赞赏!
答案 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"]
。