使用React应用程序并拥有一个this.state.filesAccepted
对象数组。它看起来像这样:
我还有一个名为filenames
的字符串数组,如下所示:
我想比较两者,如果匹配,则应从this.state.filesAccepted
中的数组中删除该对象。例如,如果filenames
("eicartest1"
)中的字符串与key
(filesAccepted
)中的key: "eicartest1"
匹配,则应从数组中删除该对象。< / p>
可能有一种更有效,更清洁的方法,但为了进行比较,我认为我需要做两个循环,如下所示:
_.map(filenames, f => {
_.map(this.state.filesAccepted, fa => {
if (f === fa.key) {
delete entire object from array;
}
});
});
我应该如何处理删除?除了map
两次之外,是否有更有效的方法进行此比较?
答案 0 :(得分:2)
您可以使用<div class="container">
<div class="row ">
<div class="col-auto bg-success">Lots of text - asdfd adf adf adf akljl;kj adffdaasd kj; jad adsfasdf adsf;kj asdfasdf a sdf adf asdf adf kl;j ;lk j jk;;j ;kl j j;k ;lj ; jklj ;jk ;j ;j ;jk ;j k;k ; ;kjasdfasdfj;k asdfasdf asdfasdf asdf asdfasdfasdf</div>
<div class="col bg-warning text-right">pushed to other line</div>
</div>
<div class="row">
<div class="col-auto bg-success">small amount of text</div>
<div class="col bg-warning text-right">same line</div>
</div>
</div>
删除不匹配的商品
Array.prototype.filter()
答案 1 :(得分:2)
以下内容应该有效:
this.state.filesAccepted.filter(
file=>!filenames.includes(file.key)
)
这导致一个数组只包含src不在文件名中的项目
要使用新filesAccepted创建新状态,您可以执行以下操作:
this.setState({
...this.state,
filesAccepted:this.state.filesAccepted.filter(
file=>!filenames.includes(file.key)
)
})