我正在尝试模拟操作系统最短的工作优先技术,我目前坚持绘制流程到达的时间。
我有这个对象数组
var arr =
[
{
"job" : "J1",
"at" : 3
},
{
"job" : "J2",
"at" : 0
},
{
"job" : "J3",
"at" : 5
},
{
"job" : "J4",
"at" : 3
}
]
我做的第一件事是根据到达时间整理阵列at
function compare(a,b) {
if (a.at < b.at)
return -1;
if (a.at > b.at)
return 1;
return 0;
}
sorted = arr.sort(compare);
现在我想将其存储在表中,以便:
-------------------------
| Time | Process |
-------------------------
| 0 | ? |
-------------------------
| 1 | ? |
-------------------------
| 2 | ? |
-------------------------
| 3 | ? |
-------------------------
| ... |
-------------------------
| ... |
-------------------------
| ... |
-------------------------
我所做的是找出具有最大at
的对象
maxTime = 0;
$.each(arr, function(k, v){
maxTime = v.at > maxTime ? v.at : maxTime;
});
并开始循环
var row = [];
for (var i = 0; i <= maxTime; i++) {
row.push('<tr>');
row.push('<td>' + i);
var arrived = true;
for (var j = 0; j < sorted.length; j++) {
arrived = false;
if(sorted[j].at == i) {
row.push('<td>' + sorted[j].job);
}
};
if(!arrived) {
row.push('<td>');
}
};
$('table').append(row.join(''));
这是什么小提琴。如果您可以看到创建的附加单元格,则找不到缺少的内容。也许稍后我会问一下爆发时间。
我简化了它,删除了布尔值,然后推入任何相等的值
for (var i = 0; i <= maxTime; i++) {
row.push('<tr>');
row.push('<td>' + i);
var arrivedJobs = "";
for (var j = 0; j < sorted.length; j++) {
if(sorted[j].at == i) {
arrivedJobs += sorted[j].job + "," ;
}
};
row.push('<td>' + arrivedJobs.replace(/(^,)|(,$)/g, ""));
};