【发布时间】:2023-03-16 12:06:01
【问题描述】:
我有两个对象,它们具有一些类似的键值 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
}
}
];
【问题讨论】:
-
请告诉我们您的尝试,我们很乐意帮助您解决具体问题。
-
你称为object的items其实是一个对象数组
-
想法(修改合并排序):使用
Array.sort和自定义比较函数,通过osmstartnode、osmendnode对对两个数组进行排序。然后并行迭代两个数组,并在遇到匹配项时,根据您的规范补充对象。两个数组中当前对象的排序键的顺序告诉你在哪个数组上选择下一个迭代元素。 -
您是说要将 arr 1 中的对象合并到 arr2 中的对象中,特别是 arr2 对象中的 propperies 对象 - 与 arr1 的索引相同?
-
@developer 是的,我想合并到第二个对象“属性”的嵌套对象中
标签: javascript arrays node.js object