今天我读完了Ch.4在Eloquent JS中,我很难理解如何在对象及其属性之间进行深度比较,特别是通过使用递归调用.我知道下面我的解决方案很天真,有点笨重,但我正试图把我所有的新东西都包围起来,我还在学习!只需不到一个月的编程:)我将不胜感激任何提示和帮助,你可能有改进代码,如果你可以帮助我更好地理解需要发生的递归.先感谢您!
编写一个函数deepEqual,它接受两个值,只有当它们是相同的值时返回true,或者是与对deepEqual的递归调用相比,其值也相等的对象.
var obj = {here: {is: "an"}, object: 2};
var obj1 = {here: {is: "an"}, object: 2};
console.log(deepEqual(obj,obj1));
Run Code Online (Sandbox Code Playgroud)
我的代码:
function objectTester(x) {
if (typeof x === 'object' && x !== null)
return true;
}
function deepEqual(valOne, valTwo) {
if (valOne === valTwo) return true;
var comp1 = objectTester(valOne);
var comp2 = objectTester(valTwo);
if (comp1 === comp2) {
var count1;
var count2;
for (var prop in valOne) {
count1++
return count1;
}
for (var …Run Code Online (Sandbox Code Playgroud) 假设我有一个看起来像这样的对象:
{
prop1: false,
prop2: false,
prop3: false
}
Run Code Online (Sandbox Code Playgroud)
和另一个看起来像这样的对象:
{
prop1: false,
prop2: true,
prop3: false
}
Run Code Online (Sandbox Code Playgroud)
差异在prop2酒店内.是否有任何方法或库(虽然首选香草)将比较两个对象,找到具有不同值的属性,并返回属性名称(在这种情况下prop2)?
我尝试使用lodash中的差异和差异功能没有成功.任何帮助或建议将不胜感激!