为了账号安全,请及时绑定邮箱和手机立即绑定

是否有一种直接的方法来检查另一个数组中是否存在一个简单数组

是否有一种直接的方法来检查另一个数组中是否存在一个简单数组

ABOUTYOU 2021-12-12 18:01:25
在以健康实践为重点的应用程序中,我需要检查一个数组是否存在于另一个数组中。匹配条件是: * 是否有额外的不匹配元素无关紧要 * 术语是否在“haystack”数组中出现多次无关紧要我们在 Lodash 讨论中找到了一个很好的解决方案。它在 JSFiddle 中被模拟并且似乎运行良好。但是在相当复杂的应用程序中,它使用 Lodash 将浏览器分开各种配置这是适用于 Lodash 的代码。let haystack = ['health tips','iridology','something else','asdfasd'];let needle = ['iridology','health tips'];alert(_.intersection(needle,haystack).length === needle.length);有谁知道在纯 Javascript 中执行此操作的简单方法?
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您可以通过Array.prototype.every在needle数组上使用来做到这一点:


let haystack = ['health tips','iridology','something else','asdfasd'];

let needle = ['iridology','health tips'];



function checkArraySubset(innerArray, outerArray){

  return innerArray.every(str => outerArray.includes(str));

}

//true

console.log(checkArraySubset(needle, haystack));


needle = ['iridology','health tips', 'not present in haystack'];


//false

console.log(checkArraySubset(needle, haystack));


haystack如果数组太长,则从数组中创建一个集合,这将导致 O(1) 查找:


let haystack = ['health tips','iridology','something else','asdfasd'];

let needle = ['iridology','health tips'];


function checkArraySubset(innerArray, outerArray){

   const lookup = new Set(outerArray);

   return innerArray.every(str => lookup.has(str));

}

//true

console.log(checkArraySubset(needle, haystack));


查看完整回答
反对 回复 2021-12-12
?
九州编程

TA贡献1785条经验 获得超4个赞

使用reduce和的一种可能方式includes


let haystack = ['health tips','iridology','something else','asdfasd'];

let needle = ['iridology','health tips'];


const found = needle.reduce((acc, item) => acc && haystack.includes(item), true);



console.log('found ', found);


查看完整回答
反对 回复 2021-12-12
  • 2 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信