Javascript - 重构对象数组

时间:2014-10-28 23:07:05

标签: javascript arrays object d3.js formatting

我目前有一个对象数组,如下所示:

[
    {
        "key":"CES0000000001",
        "25568.95655":"29923",
        "25568.96078":"31603"
    },
    {
        "key":"CES0000000001",
        "25568.96501":"34480",
        "25568.96924":"38347"
    }
]

我正试图找出重构这些数据的最佳方法,如下所示:

[
    {
        "key":"CES0000000002",
        "values": [ [ 25568.95655 , 29923 ] , [ 25568.96078 , 31603 ] ]
    },

    {
        "key":"CES0000000002",
        "values": [ [ 25568.96501 , 34480 ] , [ 25568.96924 , 38347 ] ]
    }
]

任何人都可以为此提供一些建议以及重组javascript对象的任何好资源吗?我正在使用d3.js进行更多可视化,数据格式化是关键。

2 个答案:

答案 0 :(得分:2)

我的解决方案是

    var arr= [
    {
        "key":"CES0000000001",
        "25568.95655":"29923",
        "25568.96078":"31603"
    },
    {
        "25568.96501":"34480",
        "25568.96924":"38347"
    }
];

var transformed= arr.map(function(obj){
    var result= {
        key: obj.key,
        values: []
    }

    for (var key in obj) {
      if (obj.hasOwnProperty(key) && key !== "key") {
          result.values.push([key, obj[key]]);
      }
    }
    return result;
});

console.log(transformed);

答案 1 :(得分:0)

这是我看到的一篇旧文章,但我想与您分享如何通过es6对象销毁和重组来做到这一点。 如果您有对象...

const obj1 = {
    "key":"CES0000000001",
    "25568.95655":"29923",
    "25568.96078":"31603"
};

您可以:

const restructure = ({key, ...values}) => ({key, Object.entries(values)});
const obj2 = restructure(obj1);

或者对于数组,您可以使用以下命令重新构造它们:

const b = arr.map(({key, ...values}) => ({key, Object.entries(values)}));

或者如果您正在重用该功能...

const b = arr.map(restructure);