Как отобразить данные JSON, содержащие массив данных и одну дату? - PullRequest
0 голосов
/ 24 мая 2018

Я хочу создать график, похожий на этот Как использовать данные json вместо файла tsv в многострочных диаграммах d3?

Для этого я использую данные JSON, но тамэто то, что я не понимаю в отображении моих данных

    {
"Session_test": [{
    "datas_lines": [{
            "datas_line": [],
            "log_time": "No data"
        },
        {
            "datas_line": [],
            "log_time": "No data"
        },
        {
            "datas_line": [],
            "log_time": "No data"
        },
        {
            "datas_line": [
                "157",
                "158",
                "157",
                "157",
                "157",
                "158",
                "159",
                "161",
                "160",
                "160",
                "159",
                "158",
                "159",
                "160",
                "160",
                "160",
                "160",
                "161",
                "160",
                "161",
                "159",
                "161",
                "161",
                "158",
                "161",
                "159",
                "160",
                "157"
            ],
            "log_time": "5/18/2017 4:32:14 PM"
        },
        {
            "datas_line": [
                "154",
                "156",
                "155",
                "155",
                "155",
                "156",
                "158",
                "159",
                "158",
                "157",
                "157",
                "156",
                "157",
                "158",
                "159",
                "158",
                "158",
                "159",
                "159",
                "159",
                "158",
                "159",
                "159",
                "156",
                "159",
                "157",
                "158",
                "156"
            ],
            "log_time": "5/18/2017 4:34:14 PM"
        },
        {
            "datas_line": [
                "154",
                "156",
                "155",
                "155",
                "155",
                "156",
                "158",
                "159",
                "158",
                "157",
                "157",
                "156",
                "157",
                "158",
                "159",
                "158",
                "158",
                "159",
                "159",
                "159",
                "158",
                "159",
                "159",
                "156",
                "159",
                "157",
                "158",
                "156"
            ],
            "log_time": "5/18/2017 4:34:14 PM"
        }
    ]
}]
}     

Итак, у меня есть массив objet, и каждый объект содержит log_time (date) и массив number.

Мне нужен этот формат, чтобы использовать их:

var data = [
{log_time:"5/18/2017 4:32:14 PM","0":"157", "1":"158", "2": "157", etc...},
{log_time:"5/18/2017 4:32:14 PM","0":"154" , "1":"156", "2": "155", etc...}
]; 

Как мне создать нечто подобное?

Мой фактический код:

var dateKey = d3.keys(data[0]);
var i = keys.indexOf('log_time')
if(i != -1) {
    keys.splice(i, 1);
}
var temp_list = keys.map(function(d) { 
    return {
      id:d,
      values: data.map( function(e) {
        return {
          date: e.log_time,
          temperature: e[d]
        };
      })
  } });
  console.log(temp_list);

Я сейчас нахожусьповторно использовал код из этого поста: Как использовать данные json вместо файла tsv в многострочных диаграммах d3?

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете сделать это:

let responses = [];


// your data
let data = Session_test[0].datas_lines;

data.forEach(obj => {
    if (obj.log_time !== "No data") {
        let iterator = 0;
        let final = {};
        obj.datas_line.forEach(d => {
        final[iterator.toString()] = d;
        iterator++;
        });
        final.log_time = obj.log_time;
        responses.push(final);

    }
});

объяснение: вам просто нужно проверить, содержат ли свойства log_time данные или нет.Если это так, просто запустите цикл for над значениями и продолжайте добавлять его в объект. Как только объект будет завершен, поместите его в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...