Javascript 删除基于另一个数组的嵌套数组

Javascript 删除基于另一个数组的嵌套数组,javascript,arrays,Javascript,Arrays,我有这个嵌套数组 let arr = [['first', 'second'], ['third', 'fourth'], ['second', 'third']] 现在,我想基于这个数组进行过滤/删除 let filter = ['first', 'second'] 现在我的预期输出应该是: [['third', 'fourth'], ['second', 'third']] 我只有这段代码: arr.filter(str => str.indexOf('second') ===

我有这个嵌套数组

let arr = [['first', 'second'], ['third', 'fourth'], ['second', 'third']]
现在,我想基于这个数组进行过滤/删除

let filter = ['first', 'second']
现在我的预期输出应该是:

[['third', 'fourth'], ['second', 'third']]
我只有这段代码:

arr.filter(str => str.indexOf('second') === -1)

它没有给出预期的输出,它还删除了
['second','third']
,因为它过滤包含'second'的任何元素。。因此,它们必须是一种更好的方法,或者是对代码的改进。

您可以使用
filter
检查元素是否不包含过滤器数组的每个字符串

让arr=[['first'、[second']、['third'、[fourth']、['second'、[third']]
让filterout=['first','second']
设arr2=arr.filter(x=>!filterout.every(y=>x.includes(y)))

log(arr2)
您需要测试两个数组是否相等。[有很多方法可以做到这一点]但一旦你选择了一个,你可以简单地删除任何与另一个相等的数组。为了避免重新实现控制盘,我将使用用于演示目的:

让arr=[['first',second'],['third',fourth']]
let filter=['first','second']
让结果=arr.filter(项目=>!u0.isEqual(过滤器,项目));
控制台日志(结果)

如果您关心排序并需要精确匹配,您可以编写一个简单的数组相等方法,然后过滤掉任何相等的数组:

const arrEq=(a,b)=>a.length==b.length&&a.every((e,i)=>b[i]==e);
常量arr=['first','second'],['third','fourth'],['second','third'];
常量过滤器=['第一','第二'];

log(arr.filter(e=>!arrEq(e,filter))
您对
['second'、'third']
有什么期望?当元素是数组时,为什么要使用
str
进行过滤
str
是一个不好的名称。str只是一个包含array@CertainPerformance没什么,我只想完全删除我放入过滤器变量的任何内容,如果存在这样的嵌套数组。所以
['second',third']
的结果应该是空的,
[]
?是因为每个
arr
子阵列至少有一个项目吗?你要找的逻辑很不清楚