JavaScript:将json中的月份数字替换为月份名称

JavaScript: Replace month numbers with month name in json

本文关键字:替换 数字 json JavaScript      更新时间:2023-09-26

我有几个月的json数据与月值eq。2015 - 01、2015 - 04"……并且我想将所有数值转换为"JAN","FEB"....根据月份分别由任何javascript函数。下面是实际的数组对象和所需的(I needed)数组对象。

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}
];

使用Array.prototype.map:

var ExpectedData = ActualData.map(function(item){
  return {
    month: monthsName[parseInt(item.month.split('-')[1], 10) -1],
    val: item.val
  };
});

可以在数组上进行映射,从字符串中获取月份号,然后返回修改后的对象。

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 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);
}

注意:这不是很优雅,但它完成了工作。