Javascript用值填充键值是一个数组

时间:2014-05-04 16:36:06

标签: javascript

我想在javasacript中迭代JSON并创建类似输出

的东西
   {
    "seriesData": [
        {
            "name": "John",
            "data": [
                5,
                3,
                4
            ]
        },
        {
            "name": "Jane",
            "data": [
                2,
                2,
                3
            ]
        },
        {
            "name": "Joe",
            "data": [
                3,
                4,
                4
            ]
        }
    ]
}

所以,我基本上需要在for循环中的每个键的数据数组中添加值。

输入看起来像: {"Records":[{"name":"Jan'10","users":[{"name":"John","y":5},{"name":"Jane","y":2},{"name":"Joe","y":3}]},{"name":"Jan'10","users":[{"name":"John","y":3},{"name":"Jane","y":2},{"name":"Joe","y":4}]},{"name":"Jan'10","users":[{"name":"John","y":4},{"name":"Jane","y":3},{"name":"Joe","y":4}]}]};

有人可以建议如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情:

var dataList = {};
function addData(name){
    if( dataList[name] == undefined)
        dataList[name] = [];
    for (var i = 1; i < arguments.length; i++) {
        dataList[name].push(arguments[i]);
    }

}
function packData(){
    var pack = []
    for(var e in dataList){
        pack.push({
            name: e, 
            data:dataList[e].sort(function(a,b){return a-b})
        });
    }
    return pack;
}

addData("Joe", 1);
addData("Jan", 2, 10);
addData("Joe", 3, 5, 10, 18, 500);
addData("Jan", 4);
addData("Joe", 5);
addData("Jan", 6);
console.log( packData() );

使用addData(name, data);将数据附加到名称,然后使用packData()

打包此数据

编辑: Sry切换到PHP一段时间......修复了脚本XD