【发布时间】:2020-07-06 18:31:19
【问题描述】:
所以我在一个对象中有 10 个不同的元素(我称他们为工人),我试图给他们两天时间(每个人工作)。天数不能连续。
我设法创建了一个生成两个不同且不连续的日子的函数
getTwoNonConsecutiveDays = () => {
let saved = [];
var days = require('./weeks.json');
let randomIndex = (days) => {
return Math.floor(Math.random() * days.length);
};
let randomPair = (days) => {
var index1 = randomIndex(days),
index2;
do {
index2 = randomIndex(days);
} while (
index1 == index2 ||
index1 == index2 + 1 ||
index1 == index2 - 1
);
return [days[index1], days[index2]];
};
;
saved.push(...randomPair(days));
return JSON.stringify(randomPair(days))
};
还有一个选择所有工人并给每个工人两天的功能
getWorkers = () => {
var workers = require('./workers.json');
return workers.map((a) =>
<View>
<Text>{this.getTwoNonConsecutiveDays()}</Text>
<Text key={a.id.toString()}>{a.id}</Text></View>
);
};
当前测试的输出是:
[{"id":3,"name":"Wednesday","workers":[]},{"id":1,"name":"Monday","workers":[]}]worker name is :1
[Mon Jul 06 2020 21:28:36.607] LOG [{"id":4,"name":"Thursday","workers":[]},{"id":1,"name":"Monday","workers":[]}]worker name is :2
[Mon Jul 06 2020 21:28:36.608] LOG [{"id":3,"name":"Wednesday","workers":[]},{"id":5,"name":"Friday","workers":[]}]worker name is :3
[Mon Jul 06 2020 21:28:36.608] LOG [{"id":1,"name":"Monday","workers":[]},{"id":4,"name":"Thursday","workers":[]}]worker name is :4
[Mon Jul 06 2020 21:28:36.609] LOG [{"id":4,"name":"Thursday","workers":[]},{"id":1,"name":"Monday","workers":[]}]worker name is :5
[Mon Jul 06 2020 21:28:36.610] LOG [{"id":3,"name":"Wednesday","workers":[]},{"id":5,"name":"Friday","workers":[]}]worker name is :6
[Mon Jul 06 2020 21:28:36.612] LOG [{"id":1,"name":"Monday","workers":[]},{"id":3,"name":"Wednesday","workers":[]}]worker name is :7
[Mon Jul 06 2020 21:28:36.613] LOG [{"id":5,"name":"Friday","workers":[]},{"id":2,"name":"Tuesday","workers":[]}]worker name is :8
[Mon Jul 06 2020 21:28:36.614] LOG [{"id":3,"name":"Wednesday","workers":[]},{"id":1,"name":"Monday","workers":[]}]worker name is :9
[Mon Jul 06 2020 21:28:36.615] LOG [{"id":4,"name":"Thursday","workers":[]},{"id":1,"name":"Monday","workers":[]}]worker name is :10
现在的问题是,一天不能由两个以上的工人占用。我想要的结果是每个工人会有两天的时间,但每天不会为单个工人选择超过两次。工人 id 可以在每个指定为数字的输出的最后看到。
【问题讨论】:
-
如果您发布输入数据和预期输出数据而不是不起作用的功能,这将有所帮助。
-
我希望有一个列表,每天最多只能找到两个工人。
-
days 数组中的项目是否唯一?
-
'...我设法创建了...' 您似乎在使用上一个问题中的the answer,甚至懒得接受。无论如何,这不是一个好的选择,因为在找到合适的配对之前进行猜测是解决问题的过度方法。
标签: javascript arrays reactjs react-native