我想要完成的是从 A 列中的人员列表中随机选择,但是一旦他们被选中,他们应该从列表中删除。这个想法是创建一个每周随机挑选某人的名册 - 但一旦他们被选中就删除该人(并在其为 0 时重新创建数组)
Example
Paul
David
John
Matt
通过运行 random(A1:A4) ,我可能会选择 David 作为我的选择,但是下次我运行该函数时,Array 会再次从 A1:A4 构建 - 因此 David 没有被删除。
我尝试添加第二列来跟踪选择,然后从数组中删除它们,但是我只能从数组中删除 1 个值而不保留所做的事情
Example
List of Users Tracking Result (print all values)
Paul John David,Paul,Matt
David John David Paul,Matt
John David Matt Paul,John
Matt Matt David Paul,John
尽管结果不是所有值,但我包含了所有值以显示我遇到的逻辑问题。在跟踪列中,我将第一个空白留空,以便跟踪字段中的值是我从结果中得到的值(结果通常只得到 1 个值)..所以 B2 = C1
我能得到一些关于如何做到这一点的指示吗?(谷歌应用脚本)
对于那些在这里要求代码的人来说
function random(a,b) {
var listPeople = new Array();
for (var i = 0; i < a.length; i++) {
var row = a[i];
for (var j = 0; j < row.length; j++) {
var value = row[j];
if (value) {
listPeople.push(value);
}
}
}
//deleting someone
var trackPeople = listPeople.slice(0);
for (var i = 0; i < trackPeople.length; i++) {
if (trackPeople[i] == b) {
trackPeople.splice(i,1);
}
}
// Returning a persons name
if (trackPeople.length > 0) {
var pick = Math.floor(Math.random() * trackPeople.length);
return trackPeople[pick];
}
}