迭代内部数据:[]在javascript中

时间:2013-12-24 04:08:42

标签: javascript json

我有以下代码可以正常工作,

 Morris.Bar({
            element: 'barchart',
            axes: true,
            data: [ json.bar.bar1 ],
            xkey: 'x',
            ykeys: ['y', 'z', 'a'],
            labels: ['Facebook', 'LinkedIn', 'Google+'],
            barColors: ['#707f9b', '#455064', '#242d3c']
        });

THE JSON

{
"bar"  : 
{
"bar1" :    {
   "x" : "2013 Q1",
   "y" : "9",
   "z" : "6",
   "a" : "8"
        },
"bar2" :    {
   "x" : "2013 Q2",
   "y" : "5",
   "z" : "7",
   "a" : "3"
        },
"bar3" :    {
   "x" : "2013 Q3",
   "y" : "8",
   "z" : "9",
   "a" : "6"
        },
"bar4" :    {
   "x" : "2013 Q4",
   "y" : "7",
   "z" : "9",
   "a" : "8"
        }
}  
}

然而,当我嵌入循环时,我在Dreamweaver中显示语法错误。此外,输出不会在网页上呈现。

 Morris.Bar({
            element: 'barchart',
            axes: true,
            data: [
            for(i=1;i<=4;i++)
            {
            json.bar.bar + i + ','
            }
            ],
            xkey: 'x',
            ykeys: ['y', 'z', 'a'],
            labels: ['Facebook', 'LinkedIn', 'Google+'],
            barColors: ['#707f9b', '#455064', '#242d3c']
        });

总的想法是让它看起来像这样

Morris.Bar({
            element: 'barchart',
            axes: true,
            data: [ json.bar.bar1,
                    json.bar.bar2,
                    json.bar.bar3,
                    json.bar.bar4 ],
            xkey: 'x',
            ykeys: ['y', 'z', 'a'],
            labels: ['Facebook', 'LinkedIn', 'Google+'],
            barColors: ['#707f9b', '#455064', '#242d3c']
        });

2 个答案:

答案 0 :(得分:3)

尝试类似:

data: (function() {
    var newBar = [];
    for (i = 1; i <= 4; i++) {
        newBar.push(json.bar["bar"+i]); //for the current structure of your json.bar object            
    }
    return newBar
})();

您可能希望使用数组json.bar作为条形值。然后你可以改为newBar.push(json.bar[i])(注意i值,但第一个元素的索引是0)

答案 1 :(得分:1)

你不能在数组中使用for循环。

你在外面做。

或者在ECMAScript5中,您可以使用:

data: Object.keys(json.bar).map(function(key) {return json.bar[key]}),