Цикл по вложенному массиву json для создания нового массива - PullRequest
1 голос
/ 02 апреля 2019

Я работаю над лямбда-функцией, которая GET передает данные из одного API и POST передает их другому.Данные представляют собой список контактов со свойствами, например, имя, фамилия, адрес электронной почты и т. Д.

Вывод JSON содержит слишком много свойств, которые мне не нужны.См. Ниже пример кода (фактический код содержит гораздо больше свойств и вложенных массивов / объектов).

{
  "contacts": [
      {
          "addedAt": 1532803458796,
          "vid": 101
      }
   ],
  "merge-audits": [],
  "properties": {
       "first-name": {
          "value":"hello"
        },
        "last-name": {
          "value":"there"
        },
        "email": {
          "value":"hello@there.com"
        }
... 
...
}

Как я могу выполнить цикл по каждому объекту JSON, чтобы создать новый, более простой массив JSON, как показано ниже:

[
  {
    "email": "example@example.com",
    "first_name": "",
    "last_name": "User"
  },
  {
    "email": "example2@example.com",
    "first_name": "Example",
    "last_name": "User"
  }
]

Заранее благодарим за помощь.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Вы можете использовать назначение деструктурирования для объекта и свойства короткой руки для отображения.

var data = [{ contacts: [{ addedAt: 1532803458796, vid: 101 }], "merge-audits": [], properties: { "first-name": { value: "hello" }, "last-name": { value: "there" }, email: { value: "hello@there.com" } } }],
    result = data.map(({ properties: {
        'first-name': { value: first_name },
        'last-name': { value: last_name },
         email: { value: email }
    } }) => ({ first_name, last_name, email }));

console.log(result);
1 голос
/ 03 апреля 2019

1001 * попробовать *

json.map( x => ({
  email:      x.properties.email.value,
  first_name: x.properties['first-name'].value,
  last_name:  x.properties['last-name'].value,
}));

let json = [
{
  "contacts": [{
    "addedAt": 1532803458796,
    "vid": 101
  }],
  "merge-audits": [],
  "properties": {
    "first-name": {
      "value": "hello"
    },
    "last-name": {
      "value": "there",
    },
    "email": {
      "value": "hello@there.com"
    }
  }
},
{
  "contacts": [{
    "addedAt": 1532803458796,
    "vid": 101
  }],
  "merge-audits": [],
  "properties": {
    "first-name": {
      "value": "Tom"
    },
    "last-name": {
      "value": "Smith",
    },
    "email": {
      "value": "tom@smith.com"
    }
  }
}
]

let r = json.map(x => ({
  email:      x.properties.email.value,
  first_name: x.properties['first-name'].value,
  last_name:  x.properties['last-name'].value,
}));

console.log(r);
...