[英]Javascript - Check if two arrays are equal when arrays contain an object and an array
可以说我有一个内部结构如下的数组:
applications = [
{
source : {},
highlight : []
},
{
source : {},
highlight : []
},
// More objects with same structure as objects above.
]
有时,数组结构可能如下所示:
applications = [
{
source : {}
},
{
source : {}
},
// More objects with same structure as objects above.
]
«NB»来源和突出显示内容,但现在显示在此处。
进一步说,我想比较上面的两个数组(包含内容)。 我想具体检查一下是否相等。
为此,一个著名的功能是:
arraysEqual(arr1, arr2) {
if (arr1.length !== arr2.length)
return false;
for (var i = arr1.length; i--;) {
if (arr1[i] !== arr2[i])
return false;
}
return true;
}
我想确定的是,此函数是否可以帮助我确定数组是否相等?
这是简单的方法
JSON.stringify(arr1) == JSON.stringify(arr2)
您确定的arraysEqual函数的问题在于,只有在arr1和arr2中的项目为字符串或数字(或布尔值)类型(即{source:1}为!= {source:1}时,它才可以工作,因为尽管它们具有相同的内容,它们是不同的对象。
如果您在谈论浅等式,则可以使用该函数(例如,在比较['a',4,'b']之类的数组时)。
但是,这并不是您想要的,因为数组中的数据由对象和数组组成(根据您的示例)。
如果希望每个数组中的数据完全相同,则需要深度相等(即,递归比较深度中的所有值,对象和数组)。 您可以自己实现此功能,但如有可能,请使用underscore之类的第三方库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.