Объедините два объекта javascript, используя общие свойства, используя node.js - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть два объекта с некоторыми значениями ключей сравнения: osmstartnode и osmendnode. Я хочу объединить эти два объекта и получить конечный объект с новым значением, имеющим уровень congestion_level.

Первый объект

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

1 Ответ

1 голос
/ 07 апреля 2020

для объединения используйте:

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}}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...