如何在解构中包括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);
});
上面的代码给我带来了语法错误,缺少了{}
答案 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;
});