JavaScript,删除多个数组内的双引号

时间:2019-10-01 10:39:13

标签: json google-data-studio deck.js

我正在尝试为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 个答案:

答案 0 :(得分:1)

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期望的格式。

答案 1 :(得分:0)

找到答案

基本上,使用JSON将javascript对象更改为字符串。使用正则表达式替换字符串,然后使用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);