【发布时间】:2022-01-12 15:56:35
【问题描述】:
我想用 js 制作一个小脚本,它有一个用户列表,一个用户必须给另一个用户做礼物。
通过应用以下约束:
-
如果“a”是圣诞老人并给“c”送了礼物,则不能反过来。 所以“c”不可能是“a”的圣诞老人。
-
它必须同时适用于偶数和奇数用户。
在您看来,尝试最小化比较次数的正确方法是什么,即加快脚本速度。
我想这样开始,但后来我不知道如何继续:
let name = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
let a = [...name];
let group1 = [];
let groupSanta = [];
let groupUser = [];
for (var i = 0; i < name.length / 2 - 1; i++) {
let santaClaus = a[Math.floor(Math.random() * a.length)];
a = a.filter(item => item !== santaClaus);
let user = a[Math.floor(Math.random() * a.length)];
a = a.filter(item => item !== user);
group1.push({ santaClaus, user });
}
console.log(a, group1);
【问题讨论】:
-
随机播放列表,每个用户都是列表中下一个用户的圣诞老人(最后折叠)。
-
该死的我应该写代码来更快地洗牌;)你的评论比我的速度快哈哈
-
您没有清楚地描述预期的输出。 “c”也可以从“a”以外的人那里收到礼物吗?
标签: javascript arrays algorithm random