簡體   English   中英

Javascript-重組對象數組

[英]Javascript - Restructure array of objects

我目前有一個看起來像這樣的對象數組:

[
    {
        "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深入了解可視化,並且數據格式化是關鍵。

我的解決方案是

    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);

我看到這是一篇舊文章,但我想分享一下如何使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM