首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSON 數組轉換為 Geo 對象:JavaScript 遍歷構造 {地點:[經度,緯度]} 結構

     編輯:程式設計綜合問答

輸入數據

const json = [
  { wFrom:{fLatitude:"114.057868",fLongitude:"22.543099",fName:"深圳市"},
    wTo:{tLatitude:"37.6173",tLongitude:"55.755826",tName:"Moscow"},
    wValue:"31",wkey:"深圳市",wproperties:"bag" },
  { wFrom:{fLatitude:"116.681972",fLongitude:"23.354091",fName:"汕頭市"},
    wTo:{tLatitude:"37.6173",tLongitude:"55.755826",tName:"Moscow"},
    wValue:"24",wkey:"汕頭市",wproperties:"Baby Toys" }
];

目標結構

const geodata = {
  "Moscow":[37.6173,55.755826],
  "深圳市":[114.057868,22.543099],
  "汕頭市":[116.681972,23.354091]
};

轉換代碼

function buildGeoData(arr) {
    const geo = {};
    for (const item of arr) {
        const from = item.wFrom;
        const to   = item.wTo;
        // 以 wkey / tName 為鍵,經度在前,緯度在後
        geo[item.wkey] = [parseFloat(from.fLatitude), parseFloat(from.fLongitude)];
        geo[to.tName]  = [parseFloat(to.tLatitude),  parseFloat(to.tLongitude)];
    }
    return geo;
}
const geodata = buildGeoData(json);
console.log(geodata);

關鍵點

  • 使用 for...of 遍歷數組,解構賦值提取嵌套對象。
  • parseFloat 將字符串坐標轉為數值,便於地圖庫直接使用。
  • 若同一地點多次出現,後者覆蓋前者;如需保留首次或合併,可添加 if (!(key in geo)) 判斷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved