首页 > 解决方案 > 操作数组或 json 响应并将其另存为 javascript 中的另一个数组

问题描述

我有来自另一个代码的 json 响应,格式如下:

[{"Latitude":"17.4283466666667","Longitude":"78.5797422222222", "VehicleNumber":"TS08UA6743"},
{"Latitude":"17.4282822222222","Longitude":"78.5799111111111","VehicleNumber":"TS08UA6743"},
{"Latitude":"17.4284233333333","Longitude":"78.5797333333333","VehicleNumber":"TS08UA6745"}]

我想动态更改它并保存在一个数组中,如下所示:

var coordinates = {

"TS08UA6743": [
[17.4283466666667,78.5797422222222],
[17.4282822222222,78.5799111111111]
],

"TS08UA6745": [
[17.4284233333333,78.5797333333333]
]

};

这似乎很简单,但我是 javascript 新手,无法处理数组,有人可以帮忙解决逻辑吗?

标签: javascriptarraysjson

解决方案


您可以使用减少

let data = [{"Latitude":"17.4283466666667","Longitude":"78.5797422222222", "VehicleNumber":"TS08UA6743"},{"Latitude":"17.4282822222222","Longitude":"78.5799111111111","VehicleNumber":"TS08UA6743"},{"Latitude":"17.4284233333333","Longitude":"78.5797333333333","VehicleNumber":"TS08UA6745"}]

let op = data.reduce((out,{VehicleNumber:vn,Latitude:lat,Longitude:lon})=>{
  if(out[vn]){ out[vn].push([lat,lon]) }
  else { out[vn] = [[lat,lon]] }
  return out
},{})

console.log(op)

如果其他内部 reduce 可以用这个速记代替,但我保留它是为了提高可读性。

((out[vn] ? out[vn].push([lat,lon]) : out[vn]=[[lat,lon]]), out)

推荐阅读