Javascript 构建和更新阵列对象
我正在开发一个简单的注册系统,它可以显示特定车间的可用座位数。它内置于GoogleApps脚本中,使用JavaScript语法运行 当用户登录时,我为他们构建一个Javascript 构建和更新阵列对象,javascript,Javascript,我正在开发一个简单的注册系统,它可以显示特定车间的可用座位数。它内置于GoogleApps脚本中,使用JavaScript语法运行 当用户登录时,我为他们构建一个Class对象数组。其中一个对象键是座椅,它显示车间中剩余的可用斑点数。为了达到这个目的,我将类的主列表与当前注册列表进行比较,以获得最大注册人数 类对象 [{ date: 4/10/2017, title: "Workshop 1", desc: "A string description for 1", seats
Class
对象数组。其中一个对象键是座椅
,它显示车间中剩余的可用斑点数。为了达到这个目的,我将类的主列表与当前注册列表进行比较,以获得最大注册人数
类对象
[{
date: 4/10/2017,
title: "Workshop 1",
desc: "A string description for 1",
seats: ""
}]
谷歌工作表
| date | title | description | seats | |
|-----------|------------|----------------------------|-------|---|
| 4/10/2017 | Workshop 1 | A string description for 1 | 20 | |
| 5/10/2017 | Workshop 2 | A string description for 2 | 25 | |
当前注册数
| user | class0 | class1 |
|-------|-----------|-----------|
| user1 | 4/10/2017 | |
| user2 | 4/10/2017 | 5/10/2017 |
| | | |
脚本
[{
date: 4/10/2017,
title: "Workshop 1",
desc: "A string description for 1",
seats: ""
}]
//设置count变量
var计数;
//用户未注册的会话
对于(var i=0;i用户类别表的设计很糟糕,因为您无法轻松容纳参加3个类别的用户。以下内容更为可取,也会使代码更简单:
| user | class |
|-------|-----------|
| user1 | 4/10/2017 |
| user2 | 4/10/2017 |
| user2 | 5/10/2017 |
| | |
另外,不要使用count
,使用--sessions[i].seats;
作为sessions[i].seats
=count
以下是我重构它的方法,这肯定是主观的,但我喜欢使用es6,因为它看起来很简单
function refactor(sessions) {
// Sessions the user is not registered for
sessions.forEach(session => {
// update seats based on allSessionsData
allSessionsData.forEach(sessionData => {
if (session.date === sessionData[0]) {
sessions.seats = sessionData[5];
}
});
// update seats based on allRegsData
allRegsData.forEach(allRegs => {
allRegs.forEach(reg => {
if (session.date === reg) {
session.seats--;
}
});
});
});
return sessions;
}
因此,我删除了for循环并使用了foreach
,因为就我个人而言,如果我不关注索引,那么思考问题就更容易了。此外,由于您再次更新会话的每个值,您可以将其保留在第一个循环中。据我所知,您真正想要做的就是获取座位数据,然后根据其他数据收集(可能是我错了,我没有测试或使用任何数据运行此代码)。添加数据样本将有助于您将会话[I].seats=count;
移出双循环,并将其放置在主循环的末尾。或者您可以不进行计数,使用--sessions[I].seats;
是的,这是一个粗略的第一步。现在,表单对象在电子表格中作为一行发送。我需要添加一个循环以将它们添加到工作表中。