3 回答

TA貢獻1877條經驗 獲得超1個贊
不確定上面的代碼行包含在哪個函數中...無論如何,為了保留以前的數組值,您確實需要將其定義devEvent為全局變量。意思是,let drvEvent = [];應該寫在函數之外。
let ls, lS, ne; // To access outside of if blocks
if (allCheck['drloadshed']) {
ls = drEvents;
ls.push('LOADSHED'); //LOADSHED
} else if (allCheck['drloadshift']) {
lS = drEvents;
lS.push('LOADSHIFT'); //both checked
} else if (allCheck['drneutral']) {
ne = drEvents;
ne.push('NEUTRAL'); //both checked
}

TA貢獻1826條經驗 獲得超6個贊
嘗試創建 的克隆drEvents以避免改變實際數組:
let ls, lS, ne;
if (allCheck['drloadshed']) {
let ls = [...drEvents];
ls.push('LOADSHED'); //LOADSHED
} else if (allCheck['drloadshift']) {
let lS = [...drEvents];
lS.push('LOADSHIFT'); //both checked
} else if (allCheck['drneutral']) {
let ne = [...drEvents];
ne.push('NEUTRAL'); //both checked
}

TA貢獻1820條經驗 獲得超3個贊
在 if 條件之外聲明變量。當您使用 let 關鍵字聲明時,它只能在該代碼塊內(在您的情況下的 if 條件內)訪問。
let drEvent = [];
let ls = [...drEvents];
let lS = [...drEvents];
let ne = [...drEvents];
if (allCheck['drloadshed']) {
ls.push('LOADSHED'); //LOADSHED
} else if (allCheck['drloadshift']) {
lS.push('LOADSHIFT'); //both checked
} else if (allCheck['drneutral']) {
ne.push('NEUTRAL'); //both checked
}
為了避免覆蓋同一數組,您可以使用擴展運算符 (...) 創建同一數組的副本。要詳細了解發生這種情況的原因,您可以搜索按值傳遞和按引用傳遞(原始數據類型和引用數據類型)之間的差異。
添加回答
舉報