Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重构两年之间的if/else语句_Javascript_Jquery_Json_If Statement_Merge - Fatal编程技术网

Javascript 重构两年之间的if/else语句

Javascript 重构两年之间的if/else语句,javascript,jquery,json,if-statement,merge,Javascript,Jquery,Json,If Statement,Merge,我目前正在编写一个web应用程序。用户可以输入一段时间的两年,比如2005年和2014年,然后应用程序只显示这两年之间的所有活动,所以更具体地说,用户可以看到2005年、2006年、2007年的所有活动。。。2014年 为了使这个过程更加动态和简单,我只制作了每年(json2005,json2006,…)而不是每个时间跨度(json2005-2006,json2005-2007)的活动列表,然后找到了一种方法,将用户选择的年份之间的所有列表合并到该时间跨度的大列表中。代码如下所示: if (ye

我目前正在编写一个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)]);
            }
        }
    }
}
(如果您想知道这意味着什么,那么
窗口[]
是一种使变量动态的方法。)

代码说明:

如果year1等于year2,那么一切都很清楚,我们只取year1的列表(我们也可以使用year2,因为它是相同的),因为我们只有一年

如果year2直接在year1之后(year2=year1+1),它们之间没有年份,所以我们只需要两个列表,第一年和第二年的一个,基本上我们将year1和year2合并,然后繁荣,我们有一个从year1到year2的大列表

如果第二年更遥远,一切都会变得有点丑陋。在您看到的代码中,如果year2是year1+3,我们必须将4个(!)不同的列表合并在一起,并且必须将每个列表都写下来。所以我们必须写:

json = $.extend(window["json" + year1], window["json" + (year1+1)], window["json" + (year1+2)], window["json" + (year1+3)]);
Buuut,从1995年到2020年,我的web应用程序有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;
}
json=data[“json”+year1];
本年风险值=第1年+1年;

而今年我实际上写了代码
(函数($){$.concat |$.extend({concat:function(b,c){vara=[];for(varx在参数中)if(typeof a='object')a=a.concat(参数[x]);返回a}}}})(jQuery)
并将extends改为concats,但为了简化我的问题,您可以在此处看到原始代码:只是为了说明,合并可以与此解决方案代码一起工作,这有点超出我的理解范围!我相信它可以工作,并且可以进行调整。仅供参考,我已经修复了代码中的一些拼写错误,现在应该可以工作了。好的,谢谢……我试过您了如果我输入一年,r代码和我的应用程序就会立即崩溃……我甚至不知道while方法是什么,哈哈:D我甚至没有出错,整个网站都崩溃了:/噢,我的上帝,谢谢你@OWEN@Zenadix引用我的变更日志:“owen kriegt和一切:”:D