我正在研究一個簡單的註冊系統,該系統顯示特定工作室中可用座位的數量。它內置在使用JavaScript語法運行的Google Apps腳本中。構建和更新數組對象
我在登錄時爲用戶構建了一個Class
對象的數組。其中一個對象鍵是seats
,它顯示了車間中剩餘的點的可用數量。爲了達到這個目的,我比較了主要類別列表,以便將最大註冊人數量提供給當前註冊列表。
類對象
[{
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 |
| | | |
腳本
// Set the count variable
var count;
// Sessions the user is not registered for
for(var i=0; i<sessions.length; i++) {
// Look the class up in the master list
for(var j=0; j<allSessionsData.length; j++) {
// Find the stored date in the master list
var date = allSessionsData[j][0];
// match the session dates to find the max seats
if(sessions[i].date === date) {
sessions[i].seats = allSessionsData[j][5];
}
}
}
// Reopen the sessions loop to get the current counts
for(var i=0; i<sessions.length; i++) {
var count = sessions[i].seats;
// Get the current 2D registrations array
for(var j=0; j<allRegsData.length; j++) {
for(var k=0; k<allRegsData[j].length; k++) {
if(sessions[i].date === allRegsData[j][k]) {
count--;
sessions[i].seats = count;
}
}
}
}
// Return the updated array
return sessions;
}
函數將返回18爲5/10 4/10日期和24。該腳本正在工作,但我想知道這是否應該濃縮成一個循環,爲什麼。我知道「最佳實踐」是主觀的,但是構建一個數組只是爲了在同一個函數中立即重新打開它是多餘的。
添加數據示例將有助於 – binariedMe
您可以將'sessions [i] .seats = count;'移出雙循環,並將其放置在主循環結束之前。或者你可以沒有計數,並使用'--sessions [i] .seats;' – Adder