gpt4 book ai didi

javascript - Google Apps 脚本变量重新分配

转载 作者:行者123 更新时间:2023-11-28 07:10:16 25 4
gpt4 key购买 nike

我正在尝试制定一年的员工计划,其中一周的不同日子需要不同数量的员工。我想将名单输出到 Google 电子表格中

我的方法是建立一个包含所有员工姓名的数组,然后在一年中的每一天从员工数组中删除 x 个姓名。 X 等于 Staff.length - 今天需要多少人。

我已经编写了代码,但输出不是我所期望的。第一天看起来正确,但随后的每一天都会返回一个空数组。

var staff 在 LoC3 上初始化并分配。但是在 LoC12 上,当我有日志输出 staff 中的内容时,我看到一个空数组。我可以看到将空数组分配给 rosterToday 导致 rosterFull 为空,但我不明白将 staff 设置为什么[,,,,,,,,]

此外,如果我清空 LoC17 (rosterToday[i] = ""),工作人员的虚拟重新分配似乎就会消失。

有人知道我在这里做错了什么吗?

function RosterTest()
{
var staff = ["Adam", "Bob", "Chris", "Dave", "Ed", "Fred", "Garry"];
var dailyRequirement = [0, 6, 7, 7, 7, 6, 2]; // num staff needed today
var rosterFull = []; // push each day's roster in here
var period = 7; // test with only 7 days, then ramp up to 365

for (var d=0; d<period; d++)
{
var rosterToday = staff; // initially start with the full roster
var reduce = staff.length - dailyRequirement[d];
Logger.log("d="+d+" staff="+staff);
// when d>=1 staff becomes [, , , , , , ]

for (var i=0; i<reduce; i++)
{
rosterToday[i] = "";
}
rosterFull.push(rosterToday);
}
for (var i=0; i<rosterFull.length; i++)
{Logger.log(rosterFull[i]);} // shows an arr of len 7 with empty arrs

// spreadsheet.getRange(row, col, height, width).setValues(rosterWeek);
}

我知道这总是优先考虑人员数组中的前几个人员,但我已经有代码可以对它们进行洗牌。这只是几条孤立的线。

最佳答案

没有考虑您所问的是否是您真正想要做的原因staff由于该行,第一次运行后为空

rosterToday = staff;

这将分配工作人员作为对 rosterToday 的引用 - 所以所有 rosterToday[i] does 也适用于 staff 。您需要制作 rosterToday 的副本。

rosterToday = staff.slice(); //makes a shallow copy of the array

这将解决该特定问题。

除此之外,您还可以使用Array.slice()复制您所拥有的内容。

var rosterToday = [];
var rosterLength = staff.length;

for (var d = 0; d < dailyRequirement.length; d += 1) {

rosterDay = staff
.slice(0,dailyRequirement[d]-1)
.concat(Array(rosterLength - d));
rosterFull.push(rosterDay)

}

但我不相信这就是您想要做的。

关于javascript - Google Apps 脚本变量重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31377816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com