gpt4 book ai didi

Javascript深度比较

转载 作者:行者123 更新时间:2023-11-29 15:28:42 24 4
gpt4 key购买 nike

关于对象深度比较的问题有人问过,我有解决办法。但是解决方案中有一行我不完全理解。

这是 solution ,这是Ch 4 of Eloquent JS中的一个问题来比较对象。我得到了除以下行之外的所有内容:

    if (!(prop in a) || !deepEqual(a[prop], b[prop]))

它位于底部。这是完整的功能:

function deepEqual(a, b) {
if (a === b) return true;

if (a == null || typeof a != "object" ||
b == null || typeof b != "object")
return false;

var propsInA = 0, propsInB = 0;

for (var prop in a)
propsInA += 1;

for (var prop in b) {
propsInB += 1;
if (!(prop in a) || !deepEqual(a[prop], b[prop]))
return false;
}

return propsInA == propsInB;
}

if (!(prop in a) 是在该索引处比较“b”中某个属性的存在,还是比较值?

真的一样q。关于后半部分,但我知道这是一个不同的答案:!deepEqual(a[prop], b[prop]) 进行的是什么类型的比较(例如,真或假)?我理解递归,但正如我之前的问题,这是在进行“它存在”比较,还是比较值中的信息?

提前谢谢你。

最佳答案

According to MDN:

The in operator returns true if the specified property is in the specified object.

Also:

The for...in statement iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.

因此,为了回答您的第一个问题,prop in a 正在检查对象 b 中的字段 prop 是否存在于对象 一个

要回答你的第二个问题,deepEqual(a[prop], b[prop]) 正在检查对象 a[prop]b[ prop] 是平等的,包括它的所有 child 和内容。

关于Javascript深度比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com