Вызвать функцию в литерале объекта - PullRequest
0 голосов
/ 05 июня 2019

Как я могу включить вызов function в мою деструктуризацию, TrimText удаляет html из строки.

data.map(item => {
  const {
    id,
    title: { rendered: title },
    content: { rendered: description },
    youtubeVideo
  } = item;


  const newVideo = {
    id,
    trimText(title), // removes html from title and description
      trimText(description),
    youtubeVideo
  };

  videos.push(newVideo);
});

Выше приведена синтаксическая ошибка, отсутствует {}

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Поскольку в комментариях упоминается ноль298, { title } означает { title: title }.Но если вы выполняете некоторую обработку значения, вам необходимо явно присвоить значение, возвращаемое этой функцией, ключу свойства:

title: trimText(title)

Другая проблема с вашим кодом - использование map, который возвращает новый массив, а также push ввод новых данных в массив с именем videos, поэтому вам нужно либо использовать один метод, либо другой:

Отключение videosмассив с forEach:

const videos = [];
data.forEach(el => {

  // create a new data object
  const newData = { ...blah };
  videos.push(newData);
});

Перебор данных с помощью map, который возвращает новый массив и присваивает его videos

const videos = data.map(el => {  

  // create a new data object
  const newData = { ...blah };
  return newData;
});
1 голос
/ 05 июня 2019

Свойства id и youtubeVideo будут работать нормально, но для trimText(title) и trimText(description), потому что они являются выражениями. Вам нужно поместить key:value в объекты.

data.map(item => {
  const {
    id,
    title: { rendered: title },
    content: { rendered: description },
    youtubeVideo
  } = item;


  const newVideo = {
    id,
    title:trimText(title), // removes html from title and description
    description:trimText(description),
    youtubeVideo
  };

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