我正在尝试模拟操作系统的最短作业优先技术,并且我目前坚持将时间映射到进程到达的时间。
我有这个对象数组
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(''));
而这会发生什么小提琴。如果您可以看到创建的其他单元格,那么我找不到我缺少的内容。也许稍后我会问一下爆发时间。