javascript - 使用 node.js 使用公共属性合并两个 javascript 对象
问题描述
我有两个具有一些相似键值 osmstartnode 和 osmendnode 的对象。我想合并这两个对象并获得具有拥塞级别的新值的最终对象。
第一个对象
var object = [{
osmstartnode: 370705004,
osmendnode: 1369956654,
congestion_level: 1
},
{
osmstartnode: 42469049,
osmendnode: 42469053,
congestion_level: 2
}
];
第二个对象
var roadobjt = [{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-74.0048445, 40.7124759],
[-74.0048533, 40.71245],
[-74.0048604, 40.7124243],
[-74.0048578, 40.7123974],
[-74.0048468, 40.7123722],
[-74.0048252, 40.7123472],
[-74.0045725, 40.7121422]
]
},
properties: {
"osmhighway": "motorway_link",
"osmoneway": "yes",
"osmwayid": 5669636,
"osmstartnode": 370705004,
"osmendnode": 1369956654,
"speed_mean_mph": 16,
"pct_from_freeflow": 72,
"speed_freeflow_mph": 22
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-73.99866284812883, 40.59729307801823],
[-73.99879364640618, 40.59716957964474],
[-73.99913817998096, 40.596844447960684],
[-73.99931411513008, 40.596676614430145]
]
},
properties: {
"osmname": "Bay Parkway",
"osmhighway": "primary",
"osmoneway": "no",
"osmwayid": 5675398,
"osmstartnode": 42469049,
"osmendnode": 42469053,
"speed_mean_mph": 20,
"pct_from_freeflow": 67,
"speed_freeflow_mph": 29
}
}
];
解决方案
合并使用:
var object = [{
osmstartnode: 370705004,
osmendnode: 1369956654,
congestion_level: 1
},
{
osmstartnode: 42469049,
osmendnode: 42469053,
congestion_level: 2
}
];
进入以下属性:
var roadobjt = [{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-74.0048445, 40.7124759],
[-74.0048533, 40.71245],
[-74.0048604, 40.7124243],
[-74.0048578, 40.7123974],
[-74.0048468, 40.7123722],
[-74.0048252, 40.7123472],
[-74.0045725, 40.7121422]
]
},
properties: {
"osmhighway": "motorway_link",
"osmoneway": "yes",
"osmwayid": 5669636,
"osmstartnode": 370705004,
"osmendnode": 1369956654,
"speed_mean_mph": 16,
"pct_from_freeflow": 72,
"speed_freeflow_mph": 22
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-73.99866284812883, 40.59729307801823],
[-73.99879364640618, 40.59716957964474],
[-73.99913817998096, 40.596844447960684],
[-73.99931411513008, 40.596676614430145]
]
},
properties: {
"osmname": "Bay Parkway",
"osmhighway": "primary",
"osmoneway": "no",
"osmwayid": 5675398,
"osmstartnode": 42469049,
"osmendnode": 42469053,
"speed_mean_mph": 20,
"pct_from_freeflow": 67,
"speed_freeflow_mph": 29
}
}
];
利用 :
roadobjt.map((r, i) => { r.properties = Object.assign(r.properties, object[i]); return r;})
结果:
[{"type":"Feature","geometry":{"type":"LineString","coordinates":[[-74.0048445,40.7124759],[-74.0048533,40.71245],[-74.0048604,40.7124243],[-74.0048578,40.7123974],[-74.0048468,40.7123722],[-74.0048252,40.7123472],[-74.0045725,40.7121422]]},"properties":{"osmhighway":"motorway_link","osmoneway":"yes","osmwayid":5669636,"osmstartnode":370705004,"osmendnode":1369956654,"speed_mean_mph":16,"pct_from_freeflow":72,"speed_freeflow_mph":22,"congestion_level":1}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[-73.99866284812883,40.59729307801823],[-73.99879364640618,40.59716957964474],[-73.99913817998096,40.596844447960684],[-73.99931411513008,40.596676614430145]]},"properties":{"osmname":"Bay Parkway","osmhighway":"primary","osmoneway":"no","osmwayid":5675398,"osmstartnode":42469049,"osmendnode":42469053,"speed_mean_mph":20,"pct_from_freeflow":67,"speed_freeflow_mph":29,"congestion_level":2}}]
推荐阅读
- javascript - 为什么成功授权后使用 Express 的节点 js 中间件不调用给定的 API?
- javascript - JavaScript Fetch & Push 数组返回“未定义”
- sql - 如何根据条件选择输出列
- bootstrap-4 - Bootstrap 下拉链接在移动设备上立即跟随链接
- ruby-on-rails - 如何在生产 ruby on rails 上生成 puma.sock 文件
- typescript - 什么是破坏元组的正确惯用方法,其中只有一些值会在 Typescript 中创建新变量?
- javascript - 为什么我不能通过使用导入的包实例访问函数?
- ionic4 - jhipster ionic4 生成的应用程序无法通过 keycloak 验证以下文章“如何使用 Ionic 4 for JHipster 6 构建移动应用程序”
- java - 编写一个名为 Tail 的应用程序,打印在标准输入中找到的最后 k 个字符串(假设标准输入有 k 个或更多字符串)
- ubuntu - 将远程视频桥安装到现有的 jitsi-meet 安装。SSL 错误