我需要“精简”并将对象列表为更少的属性,但仍然有很多。我的代码如下所示:
function reduceSpeakersData(speakers: Speaker[]) {
return speakers.map(function(speaker: Speaker) {
//return speaker;
return ({
id: speaker.id,
firstName: speaker.firstName,
lastName: speaker.lastName,
imageUrl: speaker.imageUrl,
company: speaker.company
})
});
}我知道如果我有:
firstName: firstName我可以让它
firstName但我不确定我能做什么
firstName: speaker.firstName有什么建议吗?
发布于 2019-07-04 18:57:50
如果你只想做浅薄的克隆,那么.
speakers.map(speaker => ({ ...speaker }))如果需要排除某些属性,则可以重构:
speakers.map(({ to, exclude, ...speaker }) => speaker)但是,如果您需要排除尽可能多的值,那么就没有简单的方法了。你可以使用一个帮手,例如:
const pick = (head, ....tail) => obj => !head ? {} : Object.assign(pick(...tail), { [head]: obj[head] });
speakers.map( pick("id", "firstName", /*...*/) )发布于 2019-07-04 18:55:18
可能是因为添加了一些破坏性的对象概念
const reduceSpeakersData = (speakers: Speaker[]) => {
return speakers.map(({ id, firstName, lastName, imageUrl, company }: Speaker) => ({
id,
firstName,
lastName,
imageUrl,
company
}));
};发布于 2019-07-04 18:55:46
可以使用参数列表中的析构和箭头函数:
function reduceSpeakersData(speakers: Speaker[]) {
return speakers.map(({id, firstName, lastName, imageUrl, company}: Speaker) =>
({id, firstName, lastName, imageUrl, company})
);
}https://stackoverflow.com/questions/56893061
复制相似问题