我有一个对应于开门和关门时间列表的数组。我已经能够操纵它来显示我需要的内容。该数组对应于一周内的开门和关门时间。我能够分解数组并列出时间,但我经常重复自己,我想知道是否有更好、更干燥、更干净的方法来做到这一点。
var array = ["Today at 8:00 AM", "Today at 4:00 PM",
"Tomorrow at 8:00 AM", "Tomorrow at 4:00 PM", "Thursday at 8:00 AM",
"Thursday at 4:00 PM", "Friday at 8:00 AM", "Friday at 4:00 PM",
"Saturday at 10:00 AM", "Saturday at 8:00 PM", "Sunday at 8:00 AM",
"Sunday at 4:00 PM", "Monday at 8:00 AM", "Monday at 4:00 PM"]
day1 = "Open " + array[0] + " Closed " + array[1]
day2 = "Open " + array[2] + " Closed " + array[3]
day3 = "Open " + array[4] + " Closed " + array[5]
day4 = "Open " + array[6] + " Closed " + array[7]
day5 = "Open " + array[8] + " Closed " + array[9]
day6 = "Open " + array[10] + " Closed " + array[11]
day7 = "Open " + array[12] + " Closed " + array[13]
我承认,在开发方面,循环一直是我的致命弱点。循环是否是稍微压缩此代码的解决方案?如果是这样,如何使用以及使用哪种循环?
我想按天列出它们,类似于我在很长的重复代码中的内容。
最佳答案
您可以使用day
作为数组,并使用push
将字符串添加到数组中。要访问 day1
,请使用 day[0]
、day2
作为 day[1]
等。
var array = [
"Today at 8:00 AM", "Today at 4:00 PM",
"Tomorrow at 8:00 AM", "Tomorrow at 4:00 PM",
"Thursday at 8:00 AM", "Thursday at 4:00 PM",
"Friday at 8:00 AM", "Friday at 4:00 PM",
"Saturday at 10:00 AM", "Saturday at 8:00 PM",
"Sunday at 8:00 AM", "Sunday at 4:00 PM",
"Monday at 8:00 AM", "Monday at 4:00 PM"
];
var day = []; // Declare empty array
for (var i = 0, len = array.length; i < len; i += 2) {
// i is incremented by 2 for each iteration
// Push the formed string into the array
day.push("Open " + array[i] + " Closed " + array[i + 1]);
}
<小时/>
不过,您可以在上面的代码中使用 window
而不是 day
,并将变量添加到 window
中,即全局范围为
window['day' + counter] = '...;
不鼓励这种做法。
我建议您将变量 day
作为参数传递给您需要访问它的函数,但它超出了当前范围。
关于javascript - 使用循环来缩短此代码 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971196/