JavaScript, удалить двойные кавычки внутри нескольких массивов - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь создать пользовательский визуал для datastudio, у меня это работает, но есть шаг, который я не могу исправить, Datastudio генерирует json-файл, подобный этому

export const message = {
  "tables": {
    "DEFAULT": [
      {
        "coordinateid": [
          "143.4999336,-34.777302"
        ],
        "colorid": [
          "169,255,169"
        ],
        "sizeid": [
          1
        ]
      },
      {
        "coordinateid": [
          "143.4999358,-34.7773749"
        ],
        "colorid": [
          "169,169,169"
        ],
        "sizeid": [
          1
        ]
      },
      {

в deckgl, соответствующемкод

const drawViz = (data) => {
       var data1 = data.tables.DEFAULT;  

    getPosition: d => d.coordinateid,

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

"coordinateid": [
          143.4999336,-34.777302
        ]

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

Ответы [ 2 ]

1 голос
/ 02 октября 2019

DataStudio возвращает координаты GEO LatLong в виде строки, разделенной запятой. Правильный способ разбора этого будет следующим:

var baseCoordinate = "143.4999336,-34.777302";
// Split out the coordinates into multiple strings
var coordinates = baseCoordinate.split(",");
// Turn the strings into floats
var coordinatesAsNumbers = coordinates.map((coord) => parseFloat(coord));

Это даст вам координаты в виде чисел с плавающей точкой в ​​массиве, который, как представляется, является форматом, который ожидает deckgl.

0 голосов
/ 02 октября 2019

найти ответ

в основном, измените объект javascript на строку, используя JSON.stringify, используя регулярное выражение для замены строк, затем используйте Json.parese, чтобы изменить его обратно на объект

  var data1 = data.tables.DEFAULT;
  var data2 = JSON.stringify(data1);
  var data3 = data2.replace(/\"]/g, "]");
  var data4 = data3.replace(/\["/g, "[");
  var data4 = JSON.parse(data4);
...