Javascript 基于给定数组高效地过滤数组

Javascript 基于给定数组高效地过滤数组,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,我的问题是,我必须根据给定的数组过滤数组(javascript)。要搜索的数组的结构如下所示 var arrayToSearchUpon [ ['t1','t2','t4','t7'], ['t1','t2','t8','t5'], ['t9','t4'] ....//so on ]; 输入数组是这样的 var arrayInputFilterWith = ['t1','t2']; [['t1','t2','t4','t7'],['t1','t2','t8','t5'],...//all a

我的问题是,我必须根据给定的数组过滤数组(javascript)。要搜索的数组的结构如下所示

var arrayToSearchUpon [
['t1','t2','t4','t7'],
['t1','t2','t8','t5'],
['t9','t4']
....//so on
];
输入数组是这样的

var arrayInputFilterWith = ['t1','t2'];
[['t1','t2','t4','t7'],['t1','t2','t8','t5'],...//all arrays having t1 & t2 elements]
Right 
结果应该是这样的

var arrayInputFilterWith = ['t1','t2'];
[['t1','t2','t4','t7'],['t1','t2','t8','t5'],...//all arrays having t1 & t2 elements]
Right 
现在我用蛮力的方式做这一切,即将输入的所有元素与搜索数组的所有元素进行比较,但性能不足。我想知道这个问题是否有更好的解决方案

提前谢谢

现在用这种方式,

arrayToFilter = arrayToFilter.filter(function (element) {
            return utilservice.union(filterWith, element).length == element.length;
          });

//union function give union of two arrays
utilservice.union = function (arr1, arr2) {
      var arr = arr1.concat(arr2)
      return arr.filter(function (val, index) {
        return arr.indexOf(val) === index;
      });
    }
可以使用找到匹配项后立即中断的

var匹配=['t1','t2'];
风险值数据=[
['t1','t2','t4'],//匹配
['t9'、't2'、't4'],//不匹配
['t2','t3','t1']//匹配
];
var res=data.filter(arr=>matches.every(e=>arr.includes(e));

console.log(JSON.stringify(res))
如果您能够以有效的方式预处理数据以进行过滤,那么您就可以在数组上强制循环。然后存储在地图中,使
t1->0,2
t2->0,2
t3->1,2
等等


然后在
O(d)
中运行查询,其中
d
是元素的最长映射。

我想我可能遗漏了什么,但我不知道如何从显示的输入中获得这些结果(
ArrayToSearchOn
)。@DavidThomas,第一个数组是filter array。第二个是数组的数组。我需要过滤第二个数组,并获得包含第一个数组所有元素的所有数组元素,即filter arrayRight,但根据显示的输入,输出具有不同的子数组。这有点令人困惑,但最终的数组可能包含重复的元素。有没有什么办法可以防止这种情况发生,或者我需要为其运行一个过滤器this@PiyushSharma为什么要复制元素?对于t1->0,2和t2->0,2,bcoz是复制0,2@PiyushSharma哦。好啊这种重复有助于提高效率。正如你所知,这两个问题并不相同。@Piyushharma,我很高兴。我想你没有回答这个问题。我不是在寻找如何做到这一点,而是在寻找如何有效地做到这一点。这几乎和我做对的事情一样now@PiyushSharma不是因为
each()
不需要检查子数组的每个元素,而您的
filter()
方法需要检查。如果在早期标记中满足条件,它将
中断
,并忽略数组中的剩余元素