我正在使用 JavaScript IF/ELSE 以更好地理解它的作業原理。作為練習,我選擇了一家商店的以下作業時間:
- 早上 6 點到下午 6 點 = 營業
- 下午 6 點至早上 6 點 = 關閉
然后我創建了一個函式,它根據“時間”和“期間”這兩個值回傳“打開”或“關閉”這個詞。
function shopHours(time,period) {
if (time === 6 && period === 'AM') {
return 'Open';
} else if (time === 6 && period === 'AM') {
return 'Open';
} else if (time === 7 && period === 'AM') {
return 'Open';
} else if (time === 8 && period === 'AM') {
return 'Open';
} else if (time === 9 && period === 'AM') {
return 'Open';
} else if (time === 10 && period === 'AM') {
return 'Open';
} else if (time === 11 && period === 'AM') {
return 'Open';
} else if (time === 12 && period === 'PM') {
return 'Open';
} else if (time === 1 && period === 'PM') {
return 'Open';
} else if (time === 2 && period === 'PM') {
return 'Open';
} else if (time === 3 && period === 'PM') {
return 'Open';
} else if (time === 4 && period === 'PM') {
return 'Open';
} else if (time === 5 && period === 'PM') {
return 'Open';
} else {
return 'Closed';}
}
一切正常。但是,我希望能夠縮短代碼,因為它看起來太混亂了。
然后我嘗試了以下方法:
function shopHours(time,period) {
if(time <= 6 && period === 'AM') {
return 'Closed';
} else if (time >= 6 && period === 'PM') {
return 'Closed';
} else if (time === 12 && period === 'PM') {
return 'Open';
} else {
return 'Open';}
}
第二個代碼也可以正常作業并且要短得多,但是有一個我不知道如何解決的問題。當時間和時段設定為 12 點和下午時,結果應該是“關閉”,但我不確定如何實作。
我嘗試添加以下代碼,但似乎無法解決此問題。
else if (time === 12 && period === 'AM') {
return 'Closed';
}
我將非常感謝任何愿意花一點時間來研究這個問題的人。
謝謝!
uj5u.com熱心網友回復:
您可以將其分解為兩個初始場景,上午或下午。然后檢查小時,看看它應該打開還是關閉。
if (period == "AM") {
if (time < 6 || time == 12)
return "Closed";
return "Open";
}
else {
if (time >= 6 && time != 12)
return "Closed";
return "Open";
}
uj5u.com熱心網友回復:
在我看來,使用 24 小時格式更容易。然而,必須考慮12PM = 12:00并12AM = 00:00考慮到這一點。
轉換后的比較相當容易。
function shopHours(time, period) {
let hour = time;
if (period === 'PM' && hour < 12) hour = hour 12;
if (period === 'AM' && hour === 12) hour = hour - 12;
if (hour >= 6 && hour < 18) {
return 'Open';
}
return 'Closed';
}
console.log('12 AM is ' shopHours(12, 'AM') '. Expected it to be: Closed');
console.log('3 AM is ' shopHours(3, 'AM') '. Expected it to be: Closed');
console.log('6 AM is ' shopHours(6, 'AM') '. Expected it to be: Open');
console.log('9 AM is ' shopHours(9, 'AM') '. Expected it to be: Open');
console.log('12 PM is ' shopHours(12, 'PM') '. Expected it to be: Open');
console.log('3 PM is ' shopHours(3, 'PM') '. Expected it to be: Open');
console.log('6 PM is ' shopHours(6, 'PM') '. Expected it to be: Closed');
console.log('9 PM is ' shopHours(9, 'PM') '. Expected it to be: Closed');
uj5u.com熱心網友回復:
我的 version.if 目標只是縮短代碼,然后am() and pm()可以省略這些函式,并且可以在呼叫它們的地方添加里面的代碼。那將是 3 行代碼。
function shopHours(time, period){
var result;
function am () {
Number(time) < 12 && Number(time) >= 6 ? result = "open" : result = "closed";
}
function pm() {
Number(time) <= 5 || Number(time) === 12 ? result = "open" : result = "closed";
}
period === 'AM' ? am() : pm();
return result;
}
console.log("12 AM is: ", shopHours(12, 'AM'), '; expected: closed');
console.log("3 AM is: ", shopHours(3, 'AM'), '; expected: closed');
console.log("6 AM is: ", shopHours(6, 'AM'), '; expected: open');
console.log("9 AM is: ", shopHours(9, 'AM'), '; expected: open');
console.log("12 PM is: ", shopHours(12, 'PM'), '; expected: open');
console.log("3 PM is: ", shopHours(3, 'PM'), '; expected: open');
console.log("6 PM is: ", shopHours(6, 'PM'), '; expected: closed');
console.log("9 PM is: ", shopHours(9, 'PM'), '; expected: closed');
uj5u.com熱心網友回復:
這可以使用 date 輕松處理。而不是使用 if else,您可以定義openHoursand closeHours。并傳遞當前時間。你可以很容易地進行比較。
樣本:
function shopHours(time, period) {
let openHour = new Date();
let closeHour = new Date();
openHour.setHours(6);
closeHour.setHours(12 6);
let curreTime = new Date();
curreTime.setHours(period === "PM" ? 12 time : time);
if (curreTime > openHour && curreTime < closeHour) return "Open";
return "Close";
}
console.log(shopHours(11, "PM"));
console.log(shopHours(12, "AM"));
console.log(shopHours(11, "AM"));
console.log(shopHours(7, "AM"));
console.log(shopHours(5, "AM"));
您也可以只傳遞 currentTime 并進行驗證。
function shopHours(curreTime) {
let openHour = new Date();
let closeHour = new Date();
openHour.setHours(6);
closeHour.setHours(12 6);
if (curreTime > openHour && curreTime < closeHour) return "Open";
return "Close";
}
console.log(shopHours(new Date()));
uj5u.com熱心網友回復:
我的建議:
function shopHours(time, period) {
var status = "Open";
if ((period == "AM" && (time < 6 || time == 12)) || (time >= 6 && time != 12)) status = "Closed";
return status;
}
console.log(shopHours(5, "AM"));
console.log(shopHours(5, "PM"));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362155.html
標籤:javascript
下一篇:在javascript中輸入表格
