javascript - 操作数组或 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 新手,无法处理数组,有人可以帮忙解决逻辑吗?
解决方案
您可以使用减少
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)
推荐阅读
- java - Tomcat Jersey 在“OPTIONS”飞行前请求中阻止服务器
- python - 如何在pycharm中使用张量流?
- html - 自动化 HTML img 标记和类分配
- powershell - 从脱机注册表文件中读取值
- ios - 加载 youtube 视频后获取视频时长
- angular - Angular 5:TypeScript 编译中缺少。请通过 'files' 或 'include' 属性确保它在您的 tsconfig 中
- laravel - 我们如何在 ReactJS 渲染中显示 Laravel 验证响应?
- opencv - cv2.stereoCalibrate 标准错误
- rest - 将 cURL 转换为浏览器请求?
- reactjs - React 正在将 FontAwesome 样式渲染到页面