如何让常量变量在JavaScript代码中动态工作

如何让常量变量在JavaScript代码中动态工作,javascript,arrays,json,data-conversion,jqwidget,Javascript,Arrays,Json,Data Conversion,Jqwidget,这里有人能帮我使用javascript吗? 我需要知道如何使这段代码中的年份变得动态 var dataAdapter = new $.jqx.dataAdapter(source, { async: false, autoBind: true, beforeLoadComplete: function (records) { newRecords = new Array( { Year: 2012, Site1: 0, Sit

这里有人能帮我使用javascript吗? 我需要知道如何使这段代码中的年份变得动态

var dataAdapter = new $.jqx.dataAdapter(source, { 
    async: false, 
    autoBind: true,

    beforeLoadComplete: function (records) {
        newRecords = new Array(
            { Year: 2012, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }, 
            { Year: 2013, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }, 
            { Year: 2014, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }
        );

        for (var i = 0; i < records.length; i++) {
            var currentRecord = records[i];

            switch (currentRecord.Year) {
                case "2012":
                    newRecords[0]["Site" + currentRecord.SiteId] =       
                        parseFloat(currentRecord.Count);
                    break;

                case "2013":
                    newRecords[1]["Site" + currentRecord.SiteId] = 
                        parseFloat(currentRecord.Count);
                    break;

                case "2014":
                    newRecords[2]["Site" + currentRecord.SiteId] = 
                        parseFloat(currentRecord.Count);
                    break;
            }
        }

        return newRecords;
    },

    loadError: function (xhr, status, error) {
        alert('Error loading "' + source.url + '" : ' + error);
    }
});
由于我正在查询数据库中的这些数据,所以我不确定将获得多少条记录。但我知道每年最多有4个站点ID正在处理中,在Observati下已解决,临时。修理我需要根据每年的数据进行绑定。像

{Year:2012,In Process:6,Resolved:3}, 
{year:2013, In Process:4,Resolved:3, Under Observation:1}

如果你能使用外部库,我建议。 您可以使用该函数以以下方式正确转换newRecords数组:

_.indexBy(newRecords, 'Year');
如果您的问题的新记录是:

[
    { Year: 2012, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }, 
    { Year: 2013, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }, 
    { Year: 2014, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }
]
_.INDEXBYNEWRERecords,“年”;返回:

然后,您可以遍历任何基于新年字段的子对象,以计算子对象中的任何参数


希望这能有所帮助。

你只需要新的Date.getFullYear吗?你说的动态是什么意思?而且,像那样打开显式字符串是一个非常坏的习惯;这就是你想要改变的吗?你说动态,但你已经在你的newRecords数组中隐式地设置了它。您这样做只是为了提供AJAX查询返回的JSON数据元素的示例吗。您正在尝试将年度案例动态添加到您的switch语句中。请提供更多详细信息,说明您希望的结果是什么,以及您试图在交换机或newRecords数组中动态生成哪个特定日期实例?是!我需要添加以动态添加“年”。我不知道我的年表长度是多少,也不知道如何组合。以下是我的数据的示例:{Year:2012,SiteId:In Process,Count:6},{Year:2012,SiteId:Resolved,Count:3},{Year:2013,SiteId:In Process,Count:4},{Year:2013,SiteId:Resolved,Count:3},{Year:2013,SiteId:Under Observati,Count:1},{Year:2014,SiteId:In Process,Count:7},{Year:2014,SiteId:Resolved,Count:39},{年:2014,SITEID:在Observati的下面,伯爵:1 }那太好了!通过一种非常复杂的方式解决了这个问题。但是我可以用它来做另一件事!这有帮助!@随机YOY也可以考虑LoaScript函数“GROPBY”,这可能是你的工作。
[
    { Year: 2012, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }, 
    { Year: 2013, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }, 
    { Year: 2014, Site1: 0, Site2: 0, Site3: 0, Site4: 0 }
]
{ 
    '2012': { Year: 2012, Site1: 0, Site2: 0, Site3: 0, Site4: 0 },
    '2013': { Year: 2013, Site1: 0, Site2: 0, Site3: 0, Site4: 0 },
    '2014': { Year: 2014, Site1: 0, Site2: 0, Site3: 0, Site4: 0 } 
}