JavaScript:在json中用月份名称替换月份编号

JavaScript:在json中用月份名称替换月份编号,javascript,json,Javascript,Json,我有几个月的json数据,其月值等于2015-01、2015-04。。。。。。。。我想把所有的数值转换成一月,二月。。。。根据月份分别由任意javascript函数执行。下面是实际的数组对象和所需的数组对象 var ActualData = [ {"month" : "2015-01", "val" : 230.67}, {"month" : "2015-04", "val" : 345.87}, {"month" : "2015-08", "val" : 455.78}

我有几个月的json数据,其月值等于2015-01、2015-04。。。。。。。。我想把所有的数值转换成一月,二月。。。。根据月份分别由任意javascript函数执行。下面是实际的数组对象和所需的数组对象

var ActualData = [
    {"month" : "2015-01", "val" : 230.67},
    {"month" : "2015-04", "val" : 345.87},
    {"month" : "2015-08", "val" : 455.78}
];

var monthsName = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG","SEP","OCT","NOV","DEC"];

var ExpectedData = [
    {"month" : "JAN", "val" : 230.67},
    {"month" : "APR", "val" : 345.87},
    {"month" : "AUG", "val" : 455.78}
];

您可以映射数组,从字符串中获取月数,然后返回修改后的对象

var ExpectedData = ActualData.map(function(obj) {
    // Get month number from date-string and then substract 1
    var monthNum = parseInt(obj.month.slice(-2)) - 1;
    // Get month name from the array
    obj.month = monthsName[monthNum];
    // Return the object
    return obj;
});

您可以映射数组,从字符串中获取月数,然后返回修改后的对象

var ExpectedData = ActualData.map(function(obj) {
    // Get month number from date-string and then substract 1
    var monthNum = parseInt(obj.month.slice(-2)) - 1;
    // Get month name from the array
    obj.month = monthsName[monthNum];
    // Return the object
    return obj;
});
使用Array.prototype.map:

使用Array.prototype.map:


按照这些思路应该可以做到:

    var monName = monthsName[parseInt(ActualData[i].month.substring(ActualData[i].month.indexOf('-') + 1), 10) - 1]
如果您希望构造ExpectedData,则可以使用以下方法:

for(var i = 0; i < ActualData.length; i++)
{
    ExpectedData.push('month': monthsName[parseInt(ActualData[i].month.substring(ActualData[i].month.indexOf('-') + 1), 10) - 1], 'val': ActualData[i].val);
}

注意:这不是很优雅,但它完成了任务

按照这些思路应该可以做到:

    var monName = monthsName[parseInt(ActualData[i].month.substring(ActualData[i].month.indexOf('-') + 1), 10) - 1]
如果您希望构造ExpectedData,则可以使用以下方法:

for(var i = 0; i < ActualData.length; i++)
{
    ExpectedData.push('month': monthsName[parseInt(ActualData[i].month.substring(ActualData[i].month.indexOf('-') + 1), 10) - 1], 'val': ActualData[i].val);
}

注意:这不是很优雅,但它完成了任务

我喜欢这项技术,只想用所需的月份名称来描述2015年。eq.2015年1月。我喜欢这项技术,只想用所需的月份名称来concat 2015。等式2015年1月。