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

时间:2015-07-24 17:00:33

标签: javascript json

我有几个月的json数据与月值eq。 " 2015-01"," 2015-04" ........我希望将所有数值转换为" JAN",&# 34; FEB" ....根据月份分别由任何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}
];

3 个答案:

答案 0 :(得分:2)

使用Array.prototype.map

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

  };
});

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

这些方面应该有效:

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

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