3 回答

TA貢獻1877條經(jīng)驗 獲得超1個贊
不確定上面的代碼行包含在哪個函數(shù)中...無論如何,為了保留以前的數(shù)組值,您確實需要將其定義devEvent為全局變量。意思是,let drvEvent = [];應該寫在函數(shù)之外。
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條經(jīng)驗 獲得超6個贊
嘗試創(chuàng)建 的克隆drEvents以避免改變實際數(shù)組:
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條經(jīng)驗 獲得超3個贊
在 if 條件之外聲明變量。當您使用 let 關鍵字聲明時,它只能在該代碼塊內(nèi)(在您的情況下的 if 條件內(nèi))訪問。
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
}
為了避免覆蓋同一數(shù)組,您可以使用擴展運算符 (...) 創(chuàng)建同一數(shù)組的副本。要詳細了解發(fā)生這種情況的原因,您可以搜索按值傳遞和按引用傳遞(原始數(shù)據(jù)類型和引用數(shù)據(jù)類型)之間的差異。
添加回答
舉報