重构if/else语句,时间跨度在两年之间
Refactoring if/else statement for time span between two years
我目前正在编写一个web应用程序。用户可以输入两年的一段时间,比如2005年和2014年,然后应用程序只显示这两年之间的所有活动,所以更具体地说,用户可以看到2005年、2006年、2007年。。。2014.
为了使这一动态和简单,我只制作了每年的活动列表(json2005,json2006,…(,而不是每个时间跨度的(json2005-2006,json2005-2007(,然后找到了一种方法,将用户选择的年份之间的所有列表合并为该时间跨度的大列表。代码如下:
if (year1 == year2) {
json = window["json" + year1];
}
else {
if (year2 == (year1 + 1)) {
json = $.extend(window["json" + year1], window["json" + (year1+1)]);
}
else {
if (year2 == (year1 + 2)) {
json = $.extend(window["json" + year1], window["json" + (year1+1)], window["json" + (year1+2)]);
}
else {
if (year2 == (year1 + 3)) {
json = $.extend(window["json" + year1], window["json" + (year1+1)], window["json" + (year1+2)], window["json" + (year1+3)]);
}
}
}
}
(如果你想知道这意味着什么,window[]
是一种使变量动态的方法。(
解释代码:
如果year1等于year2,一切都很清楚,我们只需要列出year1(我们也可以使用year2,因为它是一样的(,因为我们只有一年。
如果年份2直接在年份1之后(年份2=年份1+1(,它们之间没有年份,所以我们只需要两个列表,第一年和第二年的列表,基本上我们将年份1与年份2合并,然后繁荣起来,我们有一个大列表,其中包括从年份1到年份2的所有内容。
如果第二年离得更远,一切都会变得有点丑陋。在你看到的代码中,如果year2是year1+3,我们必须将4(!(个不同的列表合并在一起,并将每个列表都写下来。所以我们必须写:
json = $.extend(window["json" + year1], window["json" + (year1+1)], window["json" + (year1+2)], window["json" + (year1+3)]);
Buuut,从1995年到2020年,我的网络应用程序有25年的时间来处理,它产生了325条不同的合并线。
我的问题是:有没有办法让它比现在短得多?
因为我认为有一种方法,我只是没有足够的JavaScript经验和方法知识来自己找到它。我的意思是,问题很简单,我们只需要一个指数或一种方法来知道两年之间的差异,来宣布我们需要合并多少年,但在这里我放弃了。
我也有使用因子分解的想法,但这对我的头脑来说太复杂了。但因子分解可能是关键词,是解决方案的线索。我真的不知道。如果我能把if/else语句写进$.extend()
中,也许它也会有所帮助;函数(我可以吗?(。
这个怎么样?
json = data["json" + year1];
var this_year = year1 + 1;
while(this_year <= year2) {
json = $.extend(json, data["json" + this_year]);
this_year = this_year + 1;
}
它将随着每年的数据逐步扩展,而不是试图一次扩展所有内容。请注意,$.extend
将用最新的值替换公共密钥的值。如果你需要合并这些值,这会变得有点困难(但这是可行的——我们只需要一个例子(。
- 如何在javascript中获取两个日期之间的周六和周日的日期
- javascript中两年之间的小时差(带闰年)
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- 如何在两个不同的iframe HTML之间进行通信
- 有效地获取两个区间之间的随机整数
- 如何在javascript中显示两年之间的所有闰年
- 如何用moment.js列出两个日期之间的所有月份
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 我如何用Javascript计算两个日期之间的年、月和天的差异
- 检测超过两年的浏览器
- 如何在Protractor中比较两个窗口之间两个元素的值
- 如何在JavaScript中获得两年的月份范围
- 如何在表格中计算两个日期之间的差值?日期(日、月、年)在3个不同的下拉框中
- 如何计算两个日期之间的年数?
- JS time -为两个日期之间的每一年创建一个数组
- 我如何计算“季度”的数量?这是在两个日期之间过去的,这里的季度不是简单的一年的一个季度,而是具体的日期
- 如何计算出两个日期之间的年数和剩余天数
- 查找以年为单位的两个日期之间的差异
- JavaScript计算两个日期之间的差异,在年,月,日,小时,分钟
- 重构if/else语句,时间跨度在两年之间