我想比较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;
}
假定两个对象都具有相同的确切属性列表。
问题内容: 在JavaScript中比较对象的最佳方法是什么? 例: 我知道如果 两个对象引用的是完全相同的对象 , 则它们相等 ,但是有没有办法检查它们是否具有相同的属性值? 以下方法对我有用,但这是唯一的可能性吗? 问题答案: 不幸的是,除非您递归使用并访问所有不可枚举的属性,否则没有完美的方法,但这仅在Firefox中有效。 因此,我能做的最好是猜测使用情况。 1)快速且有限。 当您具有简单
问题内容: 当比较Javascript中的日期对象时,我发现即使比较同一日期也不会返回true。 我如何比较这些日期的相等性?我对利用JS 的本机对象(而不是任何第三方库)感兴趣,因为它不适合仅使用第三方JS来比较日期。 问题答案: 这是因为在第二种情况下,将比较实际的日期对象,并且两个对象永远不会彼此相等。强迫他们编号: 如果要更明确地转换为数字,请使用以下任一方法: 要么 哦,对规范的引用:§
问题内容: 是否可以比较2组json对象的差异?我所拥有的是一个通过jquery $ post()轮询JSON对象的脚本。我想要做的是拿走刚刚被轮询的对象,并将其与存储的对象进行比较。如果一个与另一个之间有任何更改,请将其应用于存储对象或替换(以任何一种方式替换),但是从UI角度来看,我正在通过查找两者之间的差异,将更改无缝地应用于JSON对象。 2.之所以要这样做,是因为现在我已经拥有了UI,因
我有2个对象数组和2个如果条件 编辑网格行时,和将具有相同的长度,因此第一个if条件执行。当我添加新行时,长度将超过,因此第二个如果条件执行。 但我有一种情况,用户可以添加一个新行,然后立即编辑一个现有行。在那个特定的场景中,我需要执行if条件,并且我停留在那里。我们将听取任何建议。谢谢
如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。
问题内容: 我希望能够使LinkedList.contains()对于自定义比较器返回true。 假设我有1个LinkedList和2个对象 从技术上讲,两个对象在比较方面是相同的(MyObject实现Comparable) (a == b)==真 但是,当我执行以下操作时,myList对于myList.contains(b)不会返回true 我认为它是因为contains将检查对象引用,并看到a