问题标签 [object-comparison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
426 浏览

javascript - 比较没有对象引用Angular 10的两个对象

我想比较两个对象,看看它们是否相等。对象 A (offer) 是原始对象,对象 B (offerTemp) 是 A 的副本。

对象 A 显示在组件的表中,以查看表中是否有任何更改,我想将 A 与 B 进行比较。但是当我调用函数检查它们是否相等时,它说对象不相等. 我认为这是因为对象 A 具有对象的引用而 B 没有(至少这是我在控制台中记录两个对象时看到的)。

对象 A(报价)(来自控制台):

对象 B(offerTemp)(来自控制台):

这是来自component.ts

这是我的 html 中的一部分:

有没有办法在没有对象引用的情况下比较这些对象或我可以解决这个问题的其他方法?

0 投票
1 回答
74 浏览

flutter - 使用按位异或运算符“^”获取/生成对象的哈希码有什么意义?

在阅读一些代码时,我注意到一些开发人员使用按位异或运算符^来生成对象的哈希码。

这样做有什么意义?与其他获取/生成对象哈希码的方法相比,它是否具有一些优势?

这是一个代码示例。

0 投票
1 回答
77 浏览

javascript - 将两个对象与数组进行质量比较

我目前正在构建一个过滤系统,我遇到了一个问题,如果数组元素的顺序发生变化,我想防止双重过滤。

例如,我得到了这个对象:

用户 A 选择品牌 Audi (id 5f1d5077b261aa63f42cc8a9) 和 BMW (id 5f1d5077b261aa63f42cc8aa) 所以你得到这个对象:

用户 B 做同样的事情,但相反(首先是宝马,然后是奥迪)。所以我们最终得到了这个:

(注意品牌顺序的区别)

Lodash 现在,当我使用isEqual和以下代码检查这些是否相等时:

不幸的是,这又回来false了,然后我尝试只比较品牌,例如:

那也回来了false

如果对象中的过滤器相等,我的目标是返回 true,而不查看其他过滤器的顺序。只要存在相同的项目,它就应该返回 true

我还阅读了一些关于Lodash isEqualWith的内容,但我并不真正了解如何使用它。

0 投票
2 回答
125 浏览

java - 当实例向上转换时,覆盖“Object#equals(Object)”的结果应该是什么?

我特别关注遵守在 where 中建立的一般合同的对称部分Object#equals(Object),给定两个非空对象xand , andy的结果应该是相同的。x.equals(y)y.equals(x)

假设您有两个类,PurchaseOrder并且InternationalPurchaseOrder后者扩展了前者。false在基本情况下,将每个实例与另一个实例进行比较应该一致地返回是有意义的,x.equals(y)并且y.equals(x)仅仅因为 aPurchaseOrder并不总是 anInternationalPurchaseOrder因此,InternationalPurchaseOrder对象中的附加字段不会出现在 的实例中PurchaseOrder

现在,假设您向上转换了一个InternationalPurchaseOrder.

我们已经确定结果应该是对称的。但是,结果是否应该false适用于两个对象包含相同内部数据的情况?我相信结果应该是true不管一个对象有一个额外的字段的事实。由于通过向上转换order2,对类中字段的访问InternationalPurchaseOrder受到限制,因此equals()方法的结果应该是对super.equals(obj).

如果我所说的都是真的,那么equals方法的实现InternationalPurchaseOrder应该是这样的:

假设这country是该子类中声明的唯一字段。

问题出在超类

因为这两个实例不属于同一类。如果我改为使用getClass().isAssignableFrom(Class),则失去对称性。使用时也是如此instanceof。在《Effective Java》一书中,Joshua Bloch 间接警告了equals不必要的覆盖。然而,在这种情况下,子类必须有一个覆盖equals实例以比较子类中声明的字段。

这已经够久了。这是更复杂的equals函数实现的情况,还是仅仅是反对向上转换的情况?

澄清:@Progman 在下面的评论部分提出的建议没有回答这个问题。这不是覆盖equals子类方法的简单案例。我认为我在这里发布的代码表明我已经正确地做到了这一点。这篇文章特别是关于比较两个对象的预期结果,当一个对象被向上转换时,它的行为就像超类的对象一样。

0 投票
0 回答
24 浏览

json - 无法在我的角度应用程序中使用 ngx-object-diff

./node_modules/ngx-object-diff/fesm5/ngx-object-diff.js 中的警告 530:62-80“在 '@angular/core' 中找不到导出 'ɵɵdefineInjectable'

./node_modules/ngx-object-diff/fesm5/ngx-object-diff.js 中的警告 530:166-174 “在 '@angular/core' i 「wdm」 中找不到导出 'ɵɵinject':编译时出现警告。

========================================== 下面是我的应用程序详细信息--Angular CLI :6.2.9 节点:12.16.3 操作系统:win32 x64 角度:6.0.6

0 投票
1 回答
441 浏览

list - 如何在 dart/flutter 中对自定义对象使用对象比较

我收集了一些菜肴。

我想检索在他的菜单中有特定菜肴列表的所有餐厅。

我的数据模型是这样的:

我的菜肴清单是 [1,2],因此我只想检索rest1并且rest2

我的代码是这样的:

我的想法是检索所有制作特定菜肴的餐厅,然后检索这些列表之间的公共元素,以检索唯一拥有所有这些元素的餐厅蚂蚁。

问题是mom在第一个语句中等于 item,但是当我运行它时mom.removeWhere((element) => !temp.contains(element));它返回一个空列表。

我哪里错了?

谢谢

0 投票
2 回答
234 浏览

python - 如何使用 dunder 方法进行对象比较

使用 dunder 方法比较两个对象

我试图比较两个“时间对象”,但出现此错误:

'TypeError: '<' not supported between instances of 'Time' and 'Time'

这是我尝试过的:

  1. 我首先初始化了“时间类”。
  1. 我创建了一个方法来比较两个 Time 对象。
  1. 我创建了 dunder 方法。
  1. 我实例化了一些对象,并尝试比较它们(导致错误)。

我肯定错过了什么。欢迎所有关于编码的提示!

0 投票
1 回答
45 浏览

typescript - TypeScript:还有其他方法可以检测从相似类实例化的两个对象吗?

在打字稿中检测从没有运算符的类似类实例化的两个对象是否正确instanceof

它工作正常,但有点难看,我觉得有更好的方法来做到这一点。

子问题:您能否解释一下在这种情况下到底比较了什么?是指针吗?还是签名?

我正在尝试使用 typescript 和 Vue.js 作为项目来创建 WYSIWYG 编辑器来学习 typescript。一般的想法是使用自定义处理程序重新创建常见的浏览器行为。我已经停止了文本样式并且一切正常,但是数据优化存在一个问题,该问题在具有相同样式的兄弟姐妹中得出结论。例如:方案。因此,当两个对象具有相同的样式时,它们应该合并为一个。

0 投票
4 回答
52 浏览

c# - 证明两个列表(包含对象)内容相等的最简单方法

我在寻找一种简单的方法来比较和证明两个列表的内容相等时遇到了一些令人沮丧的事情。我在 stackoverflow 上查看了许多解决方案,但都没有成功。一些解决方案看起来需要大量的工作来实现,并且做一些在我看来应该更简单的事情,但也许我太简单了,无法意识到这不能简单地完成:)

我创建了一些细节的小提琴,可以在这里查看:https ://dotnetfiddle.net/cvQr5d

finalResult或者,请在下面找到完整示例,我在返回对象比较方法(变量)时遇到问题,false如果正在比较内容,我希望该值为true

0 投票
1 回答
22 浏览

java - Java Map.containsKey() 方法的内部工作

我在 java 中使用 Map<Map, Boolean> ,当我尝试使用 containsKey() 方法验证 Map 时,它总是返回 false,内部 Map 总是更新其键和值。这是看起来与此类似的代码

为什么 Map 的 containsKey() 方法总是在这里失败?