【发布时间】:2024-01-19 10:39:02
【问题描述】:
一段时间以来一直试图弄清楚如何做到这一点,但尚未取得任何成功。如果我有 2 个这样的数组:
array1 = [
{ name: 'John', age : 25},
{ name: 'Jane', age : 58}
]
array2 = [
{ name: 'Jane', age : 58},
{ name: 'John', age : 25}
]
如何检查array1 是否包含array2 的所有元素?注意 - 排序无关紧要,我希望能够写出这样的东西:
if array1.containsAll array2
console.log 'array1 contains all of the elements in array2'
else
console.log 'array1 does not contain all of the elements in array2'
我尝试过使用contains 函数,但收到如下错误:
Object .... has no method 'contains'
【问题讨论】:
-
您是否愿意考虑一个实用程序库,例如下划线来获取对象比较和组合? jsfiddle.net/no02qybh
-
没有简单的方法可以做到这一点。 alandarev 的解决方案很接近,但您无法在 JavaScript 中使用 ==(或 ===)有意义地比较对象的内容,因此您必须手动比较这些值。您可以使用实用程序库(例如 Underscore)来隐藏一些讨厌的东西,但这只是将躺椅打乱并隐藏复杂性。
标签: javascript arrays node.js coffeescript