我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗?
编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算符。
要回答最初的问题,您可以采取一种方式来解决这个问题,请注意,这有点麻烦,只需将两个数组序列化为JSON,然后比较两个JSON字符串即可。这只会告诉您数组是否不同,显然您也可以对数组中的 每个 对象执行此操作,以查看哪些对象不同。
另一个选择是使用一个具有一些比较对象的工具的库-我使用并推荐 MochiKit 。
这是一个幼稚的实现,可能对您而言就足够了-请注意此实现存在潜在的问题:
function objectsAreSame(x, y) { var objectsAreSame = true; for(var propertyName in x) { if(x[propertyName] !== y[propertyName]) { objectsAreSame = false; break; } } return objectsAreSame; }
假定两个对象都具有相同的确切属性列表。