Highcharts, как использовать переменную JavaScript в качестве источника данных серии? - PullRequest
4 голосов
/ 22 апреля 2011

Я использую кодовый модуль asp.net, который создает строковую переменную, которая содержит коллекцию чисел с плавающей точкой, разделенных запятыми Как то так в C #

string myCString = "4.5, 3.1, 6.5, 7.0, -1.3";

Эта переменная затем превращается в веб-страницу asp.net, где она назначается переменной JavaScript:

var myJString = '<%=myCString %>';

Теперь мы вводим Highcharts, где синтаксис для нормального ряда выглядит следующим образом:

series: [{
     name: 'Series1',
     data: [1.1, 3.8, 5.3, 9.8, 5.0]
       }]

Что я хотел бы сделать, так это назначить myJString полю данных серии. Я попробовал два подхода, и оба не сработали. Решение, вероятно, тривиально, но я далек от того, чтобы быть программистом-энтузиастом. Похоже, суть проблемы в том, что Highcharts ожидает массив чисел, а не строку. Однако мое понимание квадратных скобок в JavaScript заключалось в том, что они преобразуют все, что находится внутри, в строку?

Вот что работало НЕ :

series: [{
     name: 'Series1',
     data: myJString    // does not work
       }]

series: [{
     name: 'Series1',
     data: myJString - 0    // does not work either
       }]

Вторая попытка была из highcharts - переменные данные вызывают блокировку браузера ретроспективно имеет смысл, что это не сработало, поскольку вычитание 0 из строки, которая не является просто числом, не соответствует цели.

Также имеет смысл, что первая попытка не сработала, так как кажется, что нужен массив чисел, а не строка. Теперь к моему актуальному вопросу (ам):

Могу ли я недорого преобразовать строку с разделением запятыми в JavaScript, чтобы я мог использовать ее в поле данных, и если да, то как мне это сделать? Было бы лучше (с точки зрения производительности) сделать это в коде позади и передать массив в JavaScript, а затем попробовать все это с массивом? Это предполагает, что myJString не является массивом чисел с плавающей точкой - актуальная проблема.

Заранее благодарим за любые идеи, которые вы можете предоставить.

Ответы [ 3 ]

13 голосов
/ 22 апреля 2011

Попробуйте это:

data: JSON.parse("[" + myJString + "]")

В основном это форматирует содержимое строки как массив JSON.Затем функция parse десериализует строку в массив JavaScript.

Чтобы она работала, вам необходимо включить json2.js .

5 голосов
/ 29 июня 2012

Поскольку данные относятся к типу массива, вы можете использовать массивы для таких значений, как

myData = [4.5, 3.1, 6.5, 7.0, -1.3];
0 голосов
/ 04 мая 2012

Другой простой подход - использование функции JavaScript String.split (), таким образом.

серия: [{ название: «Series1», данные: myJString.split (',') }]

Если вы не уверены, будет ли после запятой пробел или нет, используйте RegEx.

серия: [{ название: «Series1», данные: myJString.split (/, [\ d] * /) }]

...