如何将数组中的随机值分配给JavaScript中另一个数组中的项目(将名称数组分配给工作日数组)?

问题描述 投票:0回答:2

我有一周的工作日:

var weekDays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

另一组员工:

var empl = ["Bill Smith", "Bob Brown", "Megan Stallion", "Seth Evermann", "Kelly Swartz", "Mike Belltooth"]; 

来自第二阵列的雇员必须在第一阵列的一天工作,例如星期一:比尔史密斯等

到目前为止我所拥有的是:

var weekDays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; 

for (var i = 0; i < weekDays.length; i++){
var empl = ["Bill Smith", "Bob Brown", "Megan Taylor", "Seth Evermann", 
"Kelly Swartz", "Mike Woods"];

console.log( "Day: " + i + ";" + " Shift: " + 
empl[Math.floor(Math.random()*empl.length)] + ";" );
}

这导致了这样的事情:

Day: 0; Shift: Megan Taylor;
Day: 1; Shift: Mike Woods;
Day: 2; Shift: Seth Evermann;
Day: 3; Shift: Bill Smith;
Day: 4; Shift: Bill Smith;
Day: 5; Shift: Bill Smith;

但是我需要它是Day:Mon,Day:Tue,Day:Wed等而不是Day:0,Day:1等。

此外,我希望每个名字只能使用一次,所以每个人只能在其中一天工作。

结果应该是这样的:

Day: Mon; Shift: Bob Brown; 
Day: Tue; Shift: Megan Taylor; 
Day: Wed; Shift: Bill Smith; 
...

我真的很感激任何帮助,谢谢。

javascript arrays loops for-loop random
2个回答
1
投票

你快到了。使用for of语法和splice

var weekDays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; 
var empl = ["Bill Smith", "Bob Brown", "Megan Taylor", "Seth Evermann", "Kelly Swartz", "Mike Woods"];

for (var i of weekDays){
  console.log( 
    "Day: " + i + ";" + " Shift: " + 
    empl.splice(Math.random()*empl.length|0, 1) + ";" 
  );
}

0
投票

你只是缺少一段代码。

你:

console.log( "Day: " + i + ";" + " Shift: " + empl[Math.floor(Math.random()*empl.length)] + ";" );

更新:

console.log( "Day: " + weekDays[i] + ";" + " Shift: " + empl[Math.floor(Math.random()*empl.length)] + ";" );
© www.soinside.com 2019 - 2024. All rights reserved.