如何将Javascript中的坐标对象数组转换为指定格式的对象?
解决方案
没问题,我来帮你实现这个prepararCoordenadas函数!你的核心需求是把数组转成带数字索引键的对象,同时处理坐标的格式——交换经纬度顺序、转成数字并保留四位小数,我们一步步来搞定:
完整实现代码
function prepararCoordenadas(array) { const resultado = {}; array.forEach((cidade, indice) => { // 解构原坐标,拆分纬度和经度字符串 const [latitudeStr, longitudeStr] = cidade.coordenadas; // 转换为数字并保留四位小数,同时交换经纬度顺序 const coordenadasFormatadas = [ parseFloat(parseFloat(longitudeStr).toFixed(4)), parseFloat(parseFloat(latitudeStr).toFixed(4)) ]; // 将处理后的城市信息存入结果对象 resultado[indice] = { nome: cidade.nome, coordenadas: coordenadasFormatadas }; }); return resultado; } // 测试函数 console.log(prepararCoordenadas([ { "nome": "Salvador", "coordenadas": ["-23.6821604","-46.8754915"]}, { "nome": "Brasília", "coordenadas": ["-22.9137531","-73.5860657"]}, { "nome": "Recife", "coordenadas": ["-8.0462741","-35.0000824"]} ]));
代码说明
- 数组转索引对象:通过
forEach遍历输入数组,用每个元素的indice作为结果对象的键,直接构建目标格式的对象 - 坐标处理:
- 先解构原坐标数组,拆分出纬度和经度的字符串
- 用
parseFloat把字符串转成数字,再通过toFixed(4)保留四位小数(注意toFixed返回字符串,所以需要再转一次数字) - 交换经纬度顺序,把经度放在前面
- 构建结果:把每个城市的名称和处理后的坐标存入结果对象的对应索引位置
为什么你的原代码不行?
你之前用Object.assign({}, array)只是简单把数组转换成了带数字键的对象,但没有对每个元素的coordenadas做任何格式转换和顺序交换,所以需要手动遍历处理每个元素来完成需求。
内容的提问来源于stack exchange,提问作者Carlos Henrique
相关产品推荐
相关产品推荐

