сопоставить несколько JSON для объекта с угловым - PullRequest
0 голосов
/ 31 октября 2019

У меня есть несколько объектов JSON, и мне нужно сопоставить их с одним объектом. Разные JSON-объекты, которые у меня есть, содержат несопоставимые "ключи"

Не могли бы вы помочь мне найти решение этой проблемы?

пример JSON 1:

[
  {
    "id": 1696,
    "date": "2019-06-27T14:18:11",
    "img": {
      "url": "test"
    },
    {
    "id": 1896,
    "date": "2019-06-27T14:18:11",
    "img": {
      "url": "test1"
    }
]

примерJSON 2:

[
  {
    "uid": 1696,
    "date": "2019-06-27T14:18:11",
    "img": {
      "link": "test"
    },
    {
    "uid": 1896,
    "date": "2019-06-27T14:18:11",
    "img": {
      "link": "test1"
    }
]

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете создать объект со всеми отображениями. И используйте map () для преобразования каждого элемента массива.

mapKeys() - это рекурсивная функция, которая отображает ключи объекта, если существует сопоставление для ключа.

Это работает для объектов любых вложенных уровней.

let data = [{ "id": 1696, "date": "2019-06-27T14:18:11", "img": { "url": "test" } }, { "id": 1896, "date": "2019-06-27T14:18:11", "img": { "url": "test1" } } ]; 

let map = { "id": "uid", "url": "link" }; 

function mapKeys(obj) {
  Object.entries(obj).forEach(([key, value]) => {
    if (map[key]) {
      obj[map[key]] = (typeof value === "object") ? mapKeys(value) : value;
      delete obj[key];
    } else {
      obj[key] = (typeof value === "object") ? mapKeys(value) : value;
    }
  });

  return obj;
}

let result = data.map(item => mapKeys(item));

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...