Javascript 按顺序连续排序数组,就像先模拟最短的作业一样
好的,直截了当地说,我有一个数组:Javascript 按顺序连续排序数组,就像先模拟最短的作业一样,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,好的,直截了当地说,我有一个数组: var arr = [ { "job": "j1", "at": 0, "bt": 8 }, { "job": "j2", "at": 2, "bt": 3 }, { "job": "j3",
var arr = [
{
"job": "j1",
"at": 0,
"bt": 8
},
{
"job": "j2",
"at": 2,
"bt": 3
},
{
"job": "j3",
"at": 3,
"bt": 1
},
{
"job": "j1",
"at": 6,
"bt": 3
}
]
其中,at
是到达时间,bt
是突发时间。好的,我有这个排序函数:
Array.prototype.sort = function(by) {
this.sort(function(a,b){
if(a[by] < b[by])
return -1;
if(a[by] > b[by])
return 1;
return 0;
});
};
Array.prototype.sort=函数(按){
this.sort(函数(a,b){
如果(a[由]b[by])
返回1;
返回0;
});
};
它根据给定的参数对对象数组进行排序。现在我想迭代所有元素,然后迭代每个元素的突发时间,并在任何其他元素包含等于当前时间的到达时间时停止。找到匹配项后,比较它们的突发时间,若另一个元素的突发时间较短,则将当前元素的运行时间减去其突发时间,然后转到下一个元素
到目前为止,我已经掌握了这一逻辑,但仍然无法找到实现它的方法:
for(i = 0; i < arr.length; i++) {
for(j = arr[i].at; j < arr[i].bt; j++){
// some other things
}
}
for(i=0;i
根据bt
的计算,您实际上是通过bt
作为二级排序进行排序。试试这个:
Array.prototype.sort = function(by) {
this.sort(function(a,b){
if (a[by] < b[by])
return -1;
if (a[by] > b[by])
return 1;
if (a[by] == b[by]) {
if (a['bt'] < b['bt'])
return -1;
if (a['bt'] > b['bt'])
return 1;
}
return 0;
});
};
Array.prototype.sort=函数(按){
this.sort(函数(a,b){
如果(a[由]b[by])
返回1;
如果(a[by]==b[by]){
如果(a['bt']b['bt'])
返回1;
}
返回0;
});
};
如此有效地按在
升序,然后按bt
升序?我想我没有弄清楚我想要什么,该死,这太难解释了,如果你熟悉这一点:这是我想要模拟的