簡體   English   中英

如何使用 D3 將 JSON 數據更改為 Javascript 對象數組

[英]How to change JSON data to Javascript array of objects with D3

這是我的 JSON 數據(此文檔是一個外部文件,名為“data.json”)

[
    {
    "maand": "augustus 2014",
    "weinigSlaap": "0.15",
    "hogeStress": "0.1",
    "langerReistijd": "0.12",
    "hogeWerkdruk": "0.1",
    "lageLiquiditeit": "0.1"
    }
]

我需要它在 D3 的幫助下變成這個樣子。

var data = [
    [
        {
            axis: "Weinig slaap",
            value: 0.15
        }, {
            axis: "Hoge stress",
            value: 0.1
        }, {
            axis: "Lange reistijd",
            value: 0.12
        }, {
            axis: "Hoge werkdruk",
            value: 0.1
        }, {
            axis: "Lage liquiditeit",
            value: 0.1
        }
    ]
];

我被困在這一點上,不再對生活抱有任何希望;)

  d3.json('data.json', function (data) {
      data.push(data);
      console.log(data);
   });

你可以嘗試這樣的事情:

 var data = [{ "maand": "augustus 2014", "weinigSlaap": "0.15", "hogeStress": "0.1", "langerReistijd": "0.12", "hogeWerkdruk": "0.1", "lageLiquiditeit": "0.1" }] var r = /(?:[AZ])/g; var keysToSkip = ["maand"] var result = []; data.forEach(function(d) { var keys = Object.keys(d).filter(x => keysToSkip.indexOf(x) === -1); var _o = keys.map(function(k) { var o = {}; var parsedVal = k.replace(r, function(s) { return " " + s }); return { axis: toTitleCase(parsedVal), value: d[k] } }) result.push(_o); }) console.log(result) function toTitleCase(str) { return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase() }

對您來說,僅 Javascript 就足夠了,如下所示。 將此代碼保存在 d3.json 成功回調中。

 var data = [{ "maand": "augustus 2014", "weinigSlaap": "0.15", "hogeStress": "0.1", "langerReistijd": "0.12", "hogeWerkdruk": "0.1", "lageLiquiditeit": "0.1" }], mappedData = []; for (var i = 0; i < data.length; i++) { var eachObjArr = []; for (key in data[i]) { if (data[i].hasOwnProperty(key)) { var obj = {}; obj[key] = data[i][key]; eachObjArr.push({ axis: key, value: data[i][key] }); } } mappedData.push(eachObjArr); } for (var i = 0; i < mappedData.length; i++) { console.log(mappedData[i]); }

使用Object.keys你可以遍歷對象的鍵,這就是你得到的:

 var d = { "maand": "augustus 2014", "weinigSlaap": "0.15", "hogeStress": "0.1", "langerReistijd": "0.12", "hogeWerkdruk": "0.1", "lageLiquiditeit": "0.1" } var r = Object.keys(d).map(k => ({ axis: k.replace(/[AZ]/g, l => (' ' + l.toLowerCase())), value: Number(d[k]) })) console.log(r)

顯然 es6 在這里有幫助!

暫無
暫無

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

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