Как извлечь ключевые значения из массива объектов - PullRequest
1 голос
/ 26 сентября 2019

У меня есть массив объектов, которые отформатированы следующим образом:

{
    "gallery": [{
        "id": 606,
        "status": 1,
        "name": "00000000606.png",
        "title": "splash.png",
        "location": "",
        "caption": "",
        "type": "image/png",
        "charset": "binary",
        "tags": "",
        "width": 2732,
        "height": 2732,
        "size": 476358,
        "embed_id": null,
        "user": 1,
        "date_uploaded": "2019-09-26T05:22:31-04:00",
        "storage_adapter": "local",
        "url": "/storage/uploads/00000000606.png",
        "thumbnail_url": "/storage/uploads/thumbs/606.png",
        "old_thumbnail_url": "/storage/uploads/thumbs/00000000606-png-160-160-true.jpg",
        "html": null
    }, {
        "id": 610,
        "status": 1,
        "name": "00000000610.png",
        "title": "icon.png",
        "location": "",
        "caption": "",
        "type": "image/png",
        "charset": "binary",
        "tags": "",
        "width": 1024,
        "height": 1024,
        "size": 274477,
        "embed_id": null,
        "user": 1,
        "date_uploaded": "2019-09-26T06:43:44-04:00",
        "storage_adapter": "local",
        "url": "/storage/uploads/00000000610.png",
        "thumbnail_url": "/storage/uploads/thumbs/610.png",
        "old_thumbnail_url": "/storage/uploads/thumbs/00000000610-png-160-160-true.jpg",
        "html": null
    }]
}

Я хотел бы установить данные для публикации следующим образом:

{
    gallery: [
        {id: 606},
        {id: 610}
    ]
}

У меня естьпопытался сделать:

const imageId = this.selectedGallery.map(({id}) => id );

затем установить массив галереи следующим образом:

{
  gallery: [
      {id: imageId},
  ]
}

это отправит полный массив в id: и не получится.

Как бы я подошел к этому?

1 Ответ

5 голосов
/ 26 сентября 2019

Когда вы используете этот тип однострочного текста, у вас есть специальный синтаксис:

.map(   (   {   id   }   )   =>   (   {   id   }   )   );
 _|_   _|_ _|_  _|_         _|_  _|_ _|_  _|_
  1     2   3    4           5    6   7    8

1 - оператор, который вы собираетесь использовать

2 - скобка, котораябудет использоваться для хранения вашей декларации параметров.Вы можете опустить его, если у вас есть один параметр.В TS, если вы наберете его, вам все равно придется поставить круглые скобки.

3 - скоба для разборки.Между этими скобками вы можете выборочно выбирать свойства вашего объекта.В вашем случае вы выбираете только идентификатор.

4 - свойства для выбора (1 или более, через запятую)

5 - жирная стрелка для записи однострочного

6 - вычисляющая скобка: этоодин из них немного хитрый, ответа из стека было бы недостаточно, чтобы объяснить это.Лучше всего понять это, играть с ним.В этом случае рассмотрите эту скобку как способ возврата объекта: поскольку тело функции (function() {}) и объявление объекта (obj = {}) используют один и тот же синтаксис в скобках, скобка изменяет его, чтобы он возвращал объект вместотело функции.

7 - скобка для объявления объекта

8 - используемые свойства.При записи одного свойства ({ id } вместо { id: id }), оно просто уменьшает синтаксис, но не позволяет вносить изменения в эту переменную.

Окончательный синтаксис будет тогда

.map(({ id }) => ({ id }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...