我有两个JavaScript对象数组,我想对它们进行比较,看看它们是否相同。对象在每个数组中的顺序可能不同(并且很可能不会)。每个数组不应该有超过10个对象。我以为jQuery可能有一个很好的解决方案来解决这个问题,但我在网上找不到太多。
我知道粗暴的嵌套$.each(array, function(){})
解决方案可以工作,但是有没有我不知道的内置函数呢?
谢谢。
发布于 2011-10-11 21:07:28
有一个简单的方法..。
$(arr1).not(arr2).length === 0 && $(arr2).not(arr1).length === 0
如果以上返回true,则即使元素的顺序不同,两个数组也是相同的。
注意:当使用JSON对象时,这只适用于低于3.0.0版的jquery
发布于 2012-08-30 22:27:49
我的方法完全不同--我使用JSON.stringify将两个集合拉平,并使用普通的字符串比较来检查是否相等。
也就是说。
var arr1 = [
{Col: 'a', Val: 1},
{Col: 'b', Val: 2},
{Col: 'c', Val: 3}
];
var arr2 = [
{Col: 'x', Val: 24},
{Col: 'y', Val: 25},
{Col: 'z', Val: 26}
];
if(JSON.stringify(arr1) == JSON.stringify(arr2)){
alert('Collections are equal');
}else{
alert('Collections are not equal');
}
注意:请注意,他的方法假设两个集合都以类似的方式排序,如果不是这样,它将给你一个错误的结果!
发布于 2014-06-06 06:26:18
将两个数组都转换为字符串并进行比较
if (JSON.stringify(array1) == JSON.stringify(array2))
{
// your code here
}
https://stackoverflow.com/questions/1773069
复制相似问题