在JavaScript中从数组中删除双引号

时间:2017-09-29 08:42:44

标签: javascript arrays object

如何在JavaScript中删除数组中的双引号?

我的数据,这个多边形坐标谷歌地图

["{lat:-8.089057558100306,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.1782636642456}", "{lat:-8.087867882261257,lng:112.17800617218018}", "{lat:-8.089057558100306,lng:112.15251445770264}"]

[{lat:-8.089057558100306,lng:112.15251445770264}, {lat:-8.100954123313068,lng:112.15251445770264}, {lat:-8.100954123313068,lng:112.1782636642456}, {lat:-8.087867882261257,lng:112.17800617218018}, {lat:-8.089057558100306,lng:112.15251445770264}]
删除双引号后,我的数据必须是数组,而不是字符串。

由于

3 个答案:

答案 0 :(得分:1)

Iif 你真的相信这些数据,eval它是最简单的转换方式:



let data = ["{lat:-8.089057558100306,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.1782636642456}", "{lat:-8.087867882261257,lng:112.17800617218018}", "{lat:-8.089057558100306,lng:112.15251445770264}"];

console.log(data.map(s => eval('null,' + s)));




null,只是让eval将其视为表达而不是{阻止}。)

但是,如果您不确定数据的来源,eval一如既往地会引入代码注入漏洞。实际上,您应该首先弄清楚数据是如何通过这种方式获得的,然后将其修复为有用的格式。

答案 1 :(得分:0)

如果你无法改变上面的结果,你必须解决它。



var a = ["{lat:-8.089057558100306,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.1782636642456}", "{lat:-8.087867882261257,lng:112.17800617218018}", "{lat:-8.089057558100306,lng:112.15251445770264}"];

a = a.map(function(o){

  var d = o.split(',').map(function(b){
      return Number( b.replace(/(}|{lat:|lng:)/g, '') );

            /* OR  
             b.replace('{lat:', '')
              .replace('lng:', '')
              .replace('}', '');
            */

  });
  
  return {
     lat: d[0],
     lng: d[1]
  };
  
});

console.log(a);




答案 2 :(得分:0)

您可以尝试正则表达式

var arr = ["{lat:-8.089057558100306,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.15251445770264}", "{lat:-8.100954123313068,lng:112.1782636642456}", "{lat:-8.087867882261257,lng:112.17800617218018}", "{lat:-8.089057558100306,lng:112.15251445770264}"]

arr = arr.map(function(item) {
  var match = item.match(/lat:(\-?[0-9\.]+),lng:(\-?[0-9\.]+)/);
  return {lat: +match[1], lng: +match[2]};
})

console.log(arr)