我有 2 个不同的嵌套对象,我需要知道它们的嵌套属性之一是否存在差异。
var a = {};
var b = {};
a.prop1 = 2;
a.prop2 = { prop3: 2 };
b.prop1 = 2;
b.prop2 = { prop3: 3 };
具有更多嵌套属性的对象可能要复杂得多。但这是一个很好的例子。我可以选择使用递归函数或带有 lodash 的东西……
原文由 JLavoie 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有 2 个不同的嵌套对象,我需要知道它们的嵌套属性之一是否存在差异。
var a = {};
var b = {};
a.prop1 = 2;
a.prop2 = { prop3: 2 };
b.prop1 = 2;
b.prop2 = { prop3: 3 };
具有更多嵌套属性的对象可能要复杂得多。但这是一个很好的例子。我可以选择使用递归函数或带有 lodash 的东西……
原文由 JLavoie 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您需要知道哪些属性不同,请使用 reduce() :
_.reduce(a, function(result, value, key) {
return _.isEqual(value, b[key]) ?
result : result.concat(key);
}, []);
// → [ "prop2" ]
原文由 Adam Boduch 发布,翻译遵循 CC BY-SA 3.0 许可协议
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
一个简单而优雅的解决方案是使用
_.isEqual
,它执行深度比较:但是,此解决方案没有显示哪个属性不同。