当前位置: 首页 > 网络应用技术

比较JavaScript对象的四种方法

时间:2023-03-07 17:12:20 网络应用技术

  JavaScript中的值很简单。您只需要使用平等的计算符号即可。例如,严格的计算符号:

  但是该对象具有结构化的数据,因此更难比较。在本文中,您将学习如何正确比较JavaScript中的对象。

  JavaScript提供了3种比较值的方法:

  当比较对象与上述任何方法进行比较时,比较的结果仅由比较值引用。这是指相等的性质。

  让我们定义对象,并在实际情况下查看参考的平等性质:

  计算结果是因为两个操作都指向同一对象实例。

  另一方面,计算结果是因为它是不同的对象示例。

  有趣的是,对象的内容是相同的:两个对象都有一个属性,并且其值是。尽管如此,即使相同结构的对象更多,结果也是结果。

  当您要比较对象引用而不是其内容时,这很有用。但是在更多情况下,您想比较对象的实际内容:例如,属性及其值。

  接下来,查看如何将对象与对象相等的对象进行比较。

  比较对象的最直接方法是读取属性并手动比较它们。

  例如,让我们写一个特殊功能以比较两个英雄对象:

  访问两个对象的属性并比较其值。

  如果您有一些比较的属性,我更喜欢编写比较功能,例如。这种函数类型具有良好的性能:在比较中,只会涉及少数属性访问者和平等运算符。

  手动比较需要手动提取属性。对于简单的对象,这不是问题。但是,比较大型对象(或未知对象)是不便的,因为它需要大量的模型代码。

  因此,让我们看一下物体的浅层层有什么帮助。

  如果使用浅比较检查对象,则必须获取两个对象的属性列表(使用),然后检查其属性值是否相等。

  以下代码是实施浅层比较的一种方式:

  在函数内部以及包含和属性名称的数组中。

  使用循环遍历钥匙并比较每个属性。

  使用浅层,您可以轻松地检查具有许多属性的对象:

  返回,因为对象是相同的属性(和),并且值是相同的。

  另一方面,由于不同的属性,它将返回。

  但是JavaScript中的对象可以嵌套。在这种情况下,浅层不能扮演好角色。

  让我们检查对象与嵌套对象的浅层比较:

  这次,即使两个对象具有相同的内容,它们也会返回。

  发生这种情况是因为嵌套对象和不同的对象实例。因此,浅层比较了两个不同的值。

  解决嵌套对象的问题需要进行深入比较。

  深度比较类似于浅层层。区别在于,当属性包含对象时,嵌套对象将被递归执行浅层层。

  看看深入比较的实现:

  一旦第13行中检查的属性是对象,递归调用将开始验证嵌套对象是否相等。

  现在使用更嵌套的对象:

  深度比较函数可以正确确定其是否具有相同的属性和值,包括嵌套对象和相等的性质。

  是平等的)。

  引用平等性质(使用或)来确定操作数量是否为同一对象实例。

  如果手动检查对象相等,则需要手动比较属性值。尽管这种类型的检查需要手动编码来比较属性,因为它很简单,但此方法很方便。

  当比较对象在运行时具有许多属性或对象的结构时,更好的方法是使用浅检查。

  如果比较对象具有嵌套对象,则应在深度比较检查中进行。