Как изменить строку в данных Google Chart - PullRequest
0 голосов
/ 28 января 2019

У меня есть responseText как строка в этом формате:

[['0.00',4474.12], ['31.25',1995.16], ['62.50',44.98], ['93.75',16.86], ['125.00',9.10], ['156.25',5.76], ['187.50',3.99], ['218.75',2.92], ['250.00',2.21], ['281.25',1.71], ['312.50',1.33], ['343.75',1.03], ['375.00',0.77], ['406.25',0.56], ['437.50',0.36], ['468.75',0.18]]

И я хочу преобразовать его в массив для подачи в addRows() функций в Google Charts API.

Не могли бы вы помочь мне сделать это с помощью JavaScript?

Большое вам спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вы можете использовать JSON.parse(), но поскольку у вас есть single quotation, они рассматриваются как синтаксическая ошибка в JSON.parse()вам нужно заменить их в первую очередь, и тогда вы не против.

console.log( JSON.parse(`[1,2,3]`))
console.log( JSON.parse(`["1",2]`))
console.log( JSON.parse(`['1',2]`))  // error on this line

Рабочий код

let str = `[['0.00',4474.12], ['31.25',1995.16], ['62.50',44.98], ['93.75',16.86], ['125.00',9.10], ['156.25',5.76], ['187.50',3.99], ['218.75',2.92], ['250.00',2.21], ['281.25',1.71], ['312.50',1.33], ['343.75',1.03], ['375.00',0.77], ['406.25',0.56], ['437.50',0.36], ['468.75',0.18]]`

let op = JSON.parse(str.replace(/'/g,`"`))

console.log(op)
0 голосов
/ 28 января 2019

вы можете использовать JSON.parse для преобразования текста в массив
(если вы заменяете одинарные кавычки на двойные, как отмечено в другом вопросе)

var text = xhr.responseText;
var arrData = JSON.parse(text);
data.addRows(arrData);

РЕДАКТИРОВАТЬ

если ваши данные отформатированы как объект json,
вы можете преобразовать в простой массив для диаграмм Google,
с помощью оператора for...in.

см. Следующий рабочий фрагмент ...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var jsonData = {"0.00" : 3717.22, "31.25" : 1657.63, "62.50" : 37.37, "93.75" : 14.00, "125.00" : 7.56, "156.25" : 4.79, "187.50" : 3.32, "218.75" : 2.43, "250.00" : 1.84, "281.25" : 1.42, "312.50" : 1.10, "343.75" : 0.85, "375.00" : 0.64, "406.25" : 0.46, "437.50" : 0.30, "468.75" : 0.15};
  var arrayData = [];

  // convert json to simple array for google charts
  for (var x in jsonData) {
    if (jsonData.hasOwnProperty(x)) {
      arrayData.push([
        x,
        jsonData[x]
      ]);
    }
  }

  // convert array to google data table
  // be sure to pass true for "first row is data" argument
  var data = google.visualization.arrayToDataTable(arrayData, true);

  var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
  chart.draw(data);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...