如何更改放置在机器中的作业顺序-javascript
我是javascript的新手。我正在对n台机器中的作业进行程序排序。我在网上发现了此代码逻辑。但我有一个小问题。最耗时的作业是最后一台机器。我希望最耗时的作业应该放在第一台机器上。。 这是我的输出如何更改放置在机器中的作业顺序-javascript,javascript,arrays,node.js,sorting,Javascript,Arrays,Node.js,Sorting,我是javascript的新手。我正在对n台机器中的作业进行程序排序。我在网上发现了此代码逻辑。但我有一个小问题。最耗时的作业是最后一台机器。我希望最耗时的作业应该放在第一台机器上。。 这是我的输出 8 Jobs Inserted JobId:j8 Time to finish this Job :22 JobId:j7 Time to finish this Job :11 JobId:j3 Time to finish this Job :10 JobId:j2 Time to finish
8 Jobs Inserted
JobId:j8 Time to finish this Job :22
JobId:j7 Time to finish this Job :11
JobId:j3 Time to finish this Job :10
JobId:j2 Time to finish this Job :8
JobId:j4 Time to finish this Job :5
JobId:j5 Time to finish this Job :4
JobId:j1 Time to finish this Job :2
JobId:j6 Time to finish this Job :1
Machines Available :5
Output =====================================>
___________________________________________________________________________________________________________________
MachineId:M1 Jobs done by this Machine:(j4 = 5)(j5 = 9)(j6 = 10) Time consumed to finish all jobs:10
___________________________________________________________________________________________________________________
MachineId:M2 Jobs done by this Machine:(j2 = 8)(j1 = 10) Time consumed to finish all jobs:10
___________________________________________________________________________________________________________________
MachineId:M3 Jobs done by this Machine:(j3 = 10) Time consumed to finish all jobs:10
___________________________________________________________________________________________________________________
MachineId:M4 Jobs done by this Machine:(j7 = 11) Time consumed to finish all jobs:11
___________________________________________________________________________________________________________________
MachineId:M5 Jobs done by this Machine:(j8 = 22) Time consumed to finish all jobs:22
______________________________________________
Highest and Lowest Time consuming Machine =========>
M5 is the highest running Machine 22
M1 is the Lowest running Machine 10
M2 is the Lowest running Machine 10
M3 is the Lowest running Machine 10
code.js
var _ = require('underscore');
var njobs = [2,8,10,5,4,1,11,22];
var howManyMachines = 5;
console.log(njobs.length+" Jobs Inserted")
var jobswithvalue = Array(njobs.length).fill().map((m,i) => {
//To remove Array Value 0
var Jindex = i;
if(Jindex == 0){
Jindex = 1
}else{
Jindex = i + 1
}
return {
jobname:"j"+Jindex,
time:njobs[i]
}
});
var sorted = jobswithvalue.sort((a,b) => b.time -a.time );
var machines = Array(howManyMachines).fill().map((m, i) => {
var Mindex = i;
if(i == 0){
Mindex = 1
}else{
Mindex = i+1
}
return {
id: i,
value: 0,
jobs: [],
name:"M"+Mindex
} });
sorted.map(function(data) {
console.log('JobId:' + data.jobname + ' Time to finish this Job :' + data.time)
});
console.log('Machines Available :' + machines.length);
//Loop it and assign it
sorted.forEach(job => {
var minMachine = machines
.slice(1)
.reduce((res, cur) =>
res.value < cur.value ? res : cur, machines[0]);
minMachine.jobs.push(job);
minMachine.value += job.time;
});
//Prints the value
console.log('Output =====================================>');
machines.map(function(data) {
var str = "MachineId:" + data.name + " Jobs done by this Machine:"
data.jobs.reduce(function(total, curr) {
var newTotal = total + curr.time;
str += "(" + curr.jobname + " = " + newTotal + ")";
return total + curr.time;
}, 0);
str += ' Time consumed to finish all jobs:' + data.value;
console.log('___________________________________________________________________________________________________________________');
console.log(str);
});
var high = Math.max.apply(Math, machines.map(function(o) {
return o.value;
}));
console.log('______________________________________________')
console.log('Highest and Lowest Time consuming Machine =========>');
var resultHigh = _.filter(machines,function (item) {
return item.value == high
});
resultHigh.map(function (data) {
console.log(data.name+' is the highest running Machine '+data.value)
});
var low = Math.min.apply(Math, machines.map(function(o) {
return o.value;
}));
var resultLow = _.filter(machines,function (item) {
return item.value == low
});
resultLow.map(function (data) {
console.log(data.name+' is the Lowest running Machine '+data.value)
});
var\=require('下划线');
var njobs=[2,8,10,5,4,1,11,22];
var howManyMachines=5;
console.log(njobs.length+“插入的作业”)
var jobswithvalue=Array(njobs.length).fill().map((m,i)=>{
//要删除数组值0
var-Jindex=i;
如果(Jindex==0){
Jindex=1
}否则{
Jindex=i+1
}
返回{
工作名称:“j”+Jindex,
时间:njobs[i]
}
});
var sorted=jobswithvalue.sort((a,b)=>b.time-a.time);
var machines=Array(howManyMachines).fill().map((m,i)=>{
var Mindex=i;
如果(i==0){
Mindex=1
}否则{
Mindex=i+1
}
返回{
id:我,
值:0,
职位:[],
名称:“M”+Mindex
} });
sorted.map(函数(数据){
console.log('JobId:'+data.jobname+'完成此作业的时间:'+data.Time)
});
console.log('Machines Available:'+Machines.length);
//循环并分配它
排序。forEach(作业=>{
var minMachine=机器
.切片(1)
.reduce((res,cur)=>
res.value');
机器.地图(功能(数据){
var str=“MachineId:”+data.name+“此计算机完成的作业:”
数据.作业.减少(函数(总计,当前){
var newTotal=总计+当前时间;
str+=“(“+curr.jobname+”=“+newTotal+”)”;
返回总计+当前时间;
}, 0);
str+='完成所有作业所花费的时间:'+data.value;
游戏游戏控制台。游戏控制台。日志日志(一个名为“UUUU厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格格厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU;
console.log(str);
});
var high=Math.max.apply(数学、机器、映射(函数(o)){
返回o值;
}));
控制台.log('''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
console.log('最高和最低耗时机器======>');
var RESULTHURG=uu0.filter(机器、功能(项){
return item.value==高
});
结果映射(函数(数据){
console.log(data.name+'是运行的最高计算机'+data.value)
});
var low=Math.min.apply(数学、机器、映射(函数(o)){
返回o值;
}));
var resultLow=u0.filter(机器、函数(项){
return item.value==低
});
map(函数(数据){
console.log(data.name+'是最低的运行机器'+data.value)
});
这是要修改的代码
//Loop it and assign it
sorted.forEach(job => {
var minMachine = machines
.slice(1)
.reduce((res, cur) =>
res.value < cur.value ? res : cur, machines[0]);
minMachine.jobs.push(job);
minMachine.value += job.time;
});
//循环并分配它
排序。forEach(作业=>{
var minMachine=机器
.切片(1)
.reduce((res,cur)=>
res.value
您尝试过什么吗?您是否看到这行var sorted=jobswithvalue.sort((a,b)=>b.time-a.time)代码>?你应该解释一下你在哪里遇到困难不,实际上那是为了分类right@JuanMendes我已经更新了我添加的问题“修改位置”是否要将作业平均分配到可用的机器,以便每台机器都有一个平衡的工作负载?您尝试了什么吗?您是否看到这行var sorted=jobswithvalue.sort((a,b)=>b.time-a.time)代码>?你应该解释一下你在哪里遇到困难不,实际上那是为了分类right@JuanMendes我已经更新了我添加到何处修改的问题您是否希望将作业平均分配到可用的机器,以便每台机器都有一个平衡的工作负载?