我有几个月的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}
];
答案 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);
}
注意:这不是很优雅,但它完成了工作。