得到类似的东西:
|--|--|--|--|
|ct|P1|P2|P3|
|--|--|--|--|
|??|5 | |10|
|--|--|--|--|
您的代码需要进行五处更改:
1)第7行(下):实例化emptyCell
, 分配false
;
2) 第 9 行:添加$("#tblBaslik").append("<th>ct</th>")
考虑到CalismaTipi
column,
3) 第25-27行:移动satir += '<td></td>'
到外面的Ciktilar
loop.
4) 第 22 行:分配true
to emptyCell
.
5) 第 18-19 行:重置emptyCell
并退出Ciktilar
loop.
var stringArray = ["P1", "P2", "P3"];
var objectArray = [{ P: "P1", PO: 5}, { P: "P3", PO: 10}];
var baslikEklendiMi = false;
var satirEkle = function(CalismaTipi, Ciktilar, tKeys)
{
var emptyCell = false; // Line 7
var satir = '<td>' + CalismaTipi + '</td>';
$("#tblBaslik").append("<th>ct</th>"); // Line 9
$.each(tKeys, function (i, val) {
if (baslikEklendiMi === false) {
$("#tblBaslik").append("<th>" + val+ "</th>");
}
$.each(Ciktilar, function (j, obj) {
if (val == obj.P) {
satir += '<td><b>' + obj.PO+ '</b></td>';
emptyCell = false; // Line 18
return false;
}
else {
emptyCell = true; // Line 22
}
});
if (emptyCell) { // Line 24
satir += '<td></td>';
}
});
baslikEklendiMi = true;
$("#tblListe").append('<tr>' + satir + '</tr>');
};
satirEkle('??', objectArray, stringArray);
您需要搬家的原因satir += '<td></td>';
之外的Ciktilar
循环是因为stringArray
列表不直接对应objectArray
列表。您想要检查所有stringArray
元素来查找匹配项,如果 ALL 之后没有匹配项stringArray
检查元素然后写入一个空单元格。所以,而不是写信给satir
在循环中,设置一个emptyCell
标志,并在循环后检查该标志。
JSBin 示例。 http://jsbin.com/nilabuxexa/edit?html,js,output