有条件地根据json标签更改json属性--javascript

时间:2014-06-10 15:00:17

标签: javascript json label

我有一个JSON文件,我加载到我的javascript var

在绘制我的数据之前:

{
    "Month": "September",
    "Value": 1681937,
    "Year": 2013
},
{
    "Month": "April",
    "Value": 2138286,
    "Year": 2014
},

我需要更换标签" Value"用"价值+年份"看起来像这样:" Value2013" 9月和" Value2014"四月。

从StackOverflow我知道这应该在javascript中可行但我不知道如何为每个条目访问Year的值并用Value + Year替换Label Value

提前谢谢。

2 个答案:

答案 0 :(得分:1)

这个怎么样?

var my = [{
    "Month": "September",
    "Value": 1681937,
    "Year": 2013
}, {
    "Month": "April",
    "Value": 2138286,
    "Year": 2014
}];

console.log('my (before) :', my);

for(var i=0; i<my.length; i++) {
    my[i]["Value" + my[i].Year] = my[i].Value;
    delete my[i]["Value"];
}

console.log('my (after) :', my);

请参阅jsFiddle的控制台,选择您需要的控制台:

结果将是:

[{
    "Month": "September",
    "Value2013": 1681937,
    "Year": 2013
}, {
    "Month": "April",
    "Value2014": 2138286,
    "Year": 2014
}]

编辑:您可以在此处查看不同的常见可能性及其效果结果:http://jsperf.com/jquery-each-vs-underscore-each-vs-for-loops/18

答案 1 :(得分:1)

我建议使用underscore来顺利实现这一目标。

给定一个对象数组

var myArray=[{
    "Month": "September",
    "Value": 1681937,
    "Year": 2013
},
{
    "Month": "April",
    "Value": 2138286,
    "Year": 2014
}];

您的替换应该是:

_.each(myArray,function(element) { 
    element['Value'+element.Year]=element.Value; 
    delete element.Value; 
});

结果数组是

[{
    "Month": "September",
    "Value2013": 1681937,
    "Year": 2013
},
{
    "Month": "April",
    "Value2014": 2138286,
    "Year": 2014
}];