如何在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}]
删除双引号后,我的数据必须是数组,而不是字符串。
由于
答案 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)