You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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"]}
]));

代码说明

  1. 数组转索引对象:通过forEach遍历输入数组,用每个元素的indice作为结果对象的键,直接构建目标格式的对象
  2. 坐标处理:
    • 先解构原坐标数组,拆分出纬度和经度的字符串
    • 用parseFloat把字符串转成数字,再通过toFixed(4)保留四位小数(注意toFixed返回字符串,所以需要再转一次数字)
    • 交换经纬度顺序,把经度放在前面
  3. 构建结果:把每个城市的名称和处理后的坐标存入结果对象的对应索引位置

为什么你的原代码不行?

你之前用Object.assign({}, array)只是简单把数组转换成了带数字键的对象,但没有对每个元素的coordenadas做任何格式转换和顺序交换,所以需要手动遍历处理每个元素来完成需求。

内容的提问来源于stack exchange,提问作者Carlos Henrique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:38:55