JavaScript中如何移除latLng值的引号 转为原生数组格式
问题核心原因
你当前代码生成latLng属性的逻辑存在本质问题:是把两个转好的浮点数,通过字符串拼接的方式拼成带方括号格式的文本,这个值的本质是字符串,并非JavaScript原生数组,因此输出时会被双引号包裹,也没法直接传给地图组件使用。
修正方法
生成latLng时不要做字符串拼接,直接使用JS原生数组语法,把转换好的经纬度作为数组元素传入即可。同时可以通过jQuery的ajax配置直接处理JSON格式,省掉手动解析的步骤。
修正后的代码
var location_data = []; $.ajax({ type: "GET", url: url, data: data, // 显式声明返回类型为JSON,jQuery会自动完成解析,不需要手动JSON.parse dataType: "json", success: function(res) { res.forEach(function(item) { // 先把经纬度转成数值类型 const lat = parseFloat(item.latitude) const lng = parseFloat(item.longitude) // 可选:过滤无效坐标,避免出现NaN污染数据集 if (isNaN(lat) || isNaN(lng)) return // 直接生成原生数组,不做字符串拼接 location_data.push({ latLng: [lat, lng], name: item.user_country_name }) }) } });
写法对比
- 原错误写法:
latLng: '['+parseFloat(item.latitude)+', '+parseFloat(item.longitude)+']'—— 最终生成的是形似数组的字符串,类型为string - 修正后写法:
latLng: [lat, lng]—— 最终生成的是标准JS数组,类型为Array,控制台输出时会自动展示带方括号的格式,完全匹配你需要的输出效果,也可以直接对接各类地图组件的打点接口。
额外提示:很多新手刚接触数组的时候会误以为要手动拼带方括号的字符串模拟数组效果,这是完全没必要的,JS原生数组在所有场景下的展示和使用体验都远好于模拟的字符串格式。
内容的提问来源于stack exchange,提问作者Masudul Hasan Shawon
相关产品推荐
相关产品推荐

