调用对象文字

时间:2019-06-05 14:16:52

标签: javascript ecmascript-6

如何在解构中包括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 个答案:

答案 0 :(得分:1)

属性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);
});

答案 1 :(得分:1)

正如Zero298在评论中所提到的,{ 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;
});