我正在构建一个函数,用SheetJS将JSON对象导出到Excel文件。在导出数据之前,我需要过滤它,使其只包含某些字段/属性。我有一个.map()方法,该方法带有一个接受多个参数的解构赋值。每个参数都是一个字段,在生成报表之前应该从JSON数据中过滤掉。有些字段总是被过滤掉,比如下面代码中的“favorite”或“linkedinsummary”。但是其他字段,比如“comments”只有在用户决定不包含它的情况下才应该被过滤掉。我的问题是我不知道如何有条件地将某些字段添加到重构赋值中。我尝试了以下方法:
//this filters out all the fields that should not appear in the report
const filteredProfiles = transformedProfiles.map((profile) => {
const {
//Below: fields to filter out
favourite,
linkedinsummary,
...filteredProfile
} = profile;
const result = {...filteredProfile};
//if the user has decided that "comments" should not be included, then add it to the
list above
if (!store.state.userData.proptions.fields.comments) {
result.comments = profile.comments;
}
return result;
});
如果我直接向列表中添加“comments”,它会起作用,“comments”会被忽略。但是对于上面这样的条件语句,“comments”仍然会被导出到报表中。
1条答案
按热度按时间jdgnovmf1#
从操作员最后的评论来看...
transformedProfiles
数组?例如,应始终筛选出favourite
和linkedinsummary
。但仅当store.state.userData.proptions.fields.comments
为false时,才应筛选出comments
。"* -jeff 3546......从我上面的一条评论来看......
_@jeff3546......这是否正确?......
if (!store.state.userData.proptions.fields.comments) {result.comments = profile.comments;}
......一般翻译为...... “每当fields
没有某个属性或属性值为*false
或错误时,必须将其从profile
分配给result
。"*...或者换句话说... *“无论fields
具有什么truthy**属性名称,都必须从result
中删除其相关键/属性。"*如果上述内容正确,则OP提供的示例代码将更改为与下一个提供的代码类似的通用实现...