首页 > 解决方案 > 使用 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
    }
  }
];

标签: javascriptarraysnode.jsobject

解决方案


合并使用:

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}}]

推荐阅读