在 React 应用程序上工作并有一个 this.state.filesAccepted
,它是一个对象数组。它看起来像这样:
我还有一个名为 filenames
的字符串数组,如下所示:
我想比较两者,如果匹配,则应从 this.state.filesAccepted
中的数组中删除该对象。例如,如果 filenames
("eicartest1"
) 中的字符串与 filesAccepted
( key: "eicartest1"
), 它应该从数组中删除该对象。
可能有更有效和更简洁的方法来执行此操作,但为了进行比较,我认为我需要执行如下两个循环:
_.map(filenames, f => {
_.map(this.state.filesAccepted, fa => {
if (f === fa.key) {
delete entire object from array;
}
});
});
我应该如何处理删除?除了两次 map
之外,还有更有效的方法来进行这种比较吗?
最佳答案
以下应该有效:
this.state.filesAccepted.filter(
file=>!filenames.includes(file.key)
)
这导致一个数组只包含 src 不在文件名中的项目
要使用新文件创建新状态,您可以执行以下操作:
this.setState({
...this.state,
filesAccepted:this.state.filesAccepted.filter(
file=>!filenames.includes(file.key)
)
})
关于javascript - 将字符串数组与对象数组进行比较并删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50518286/