使用lodash检查一个数组是否存在于另一个数组中

25

有没有可能检查一个数组是否为空?

A=[
  "EMPRESA",
  "CD_MAQ",
  "DT_INI_MAQ"
]

存在于另一个数组中

B=[
  "EMPRESA",
  "CD_MAQ",
  "DT_INI_MAQ",
  "CD_WKC",
  "DT_INI_WKC"
]
我想检查数组A中的所有条目是否存在于B中。

2
匹配时,顺序必须相同且不能有间隙吗? - trincot
1
你可以检查两个数组的交集是否与数组A的长度相等: var completeIntersect = _.intersection(A, B).length === A.length; - Tholle
不排序,只有第一个条目存在于第二个中。 - Leonel Matias Domingos
3个回答

45

var A=[
  "EMPRESA",
  "CD_MAQ",
  "DT_INI_MAQ"
];

var B=[
  "EMPRESA",
  "CD_MAQ",
  "DT_INI_MAQ",
  "CD_WKC",
  "DT_INI_WKC"
];

if ( _.difference(A,B).length === 0){
  // all A entries are into B
}
<script src="https://cdn.jsdelivr.net/lodash/4.16.2/lodash.min.js"></script>

只需使用_.difference


10

你可以使用这两个数组的交集,然后与原始数组进行比较。

var A=[
  "EMPRESA",
  "CD_MAQ",
  "DT_INI_MAQ"
];

var B=[
  "EMPRESA",
  "CD_MAQ",
  "DT_INI_MAQ",
  "CD_WKC",
  "DT_INI_WKC"
];

console.log(_.isEqual(_.intersection(B,A), A));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.2/lodash.js"></script>


6
在这种情况下,您不需要使用lodash。以下是使用原生JS的单行代码。
A.every(i => B.includes(i))

非常优雅,感谢分享。原帖请求使用 Lodash 解决方案,因此从技术上讲,这并不符合要求,但这是一种优雅的解决方案,可以消除使用 Lodash 的要求(更好)。 - Brock Klein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接