![](/img/trans.png)
[英]Is there a specific reason why javascript has no isEqual() native function to compare Objects?
[英]Javascript compare objects having functions using lodash isEqual
如果它們具有函數,如何比較兩個對象是否相等? lodash的isEqual工作非常好,直到函數被拋出:
_.isEqual({
a: 1,
b: 2
}, {
b: 2,
a: 1
});
// -> true
_.isEqual({
a: 1,
b: 2,
c: function () {
return 1;
}
}, {
a: 1,
b: 2,
c: function () {
return 1;
}
});
// -> false
你確定要比較功能嗎? 如果您只關心比較每個不是函數的屬性,那么使用lodash很容易:
var o1 = { a: 1, b: 2, c: function() { return 1; } },
o2 = { a: 1, b: 2, c: function() { return 1; } };
_.isEqual(o1, o2)
// → false
_.isEqual(_.omit(o1, _.functions(o1)), _.omit(o2, _.functions(o2)));
// → true
functions()函數返回一個函數屬性列表,並使用omit() ,你可以擺脫它們。
這是我試過的:
_.isEqual(o1, o2, function(val1, val2) {
if(_.isFunction(val1) && _.isFunction(val2)) {
return val1.toString() === val2.toString();
}
})
Lodash支持customizer
功能,允許您編寫自己的相等檢查。 這似乎是一個足夠好的測試,看看函數是否是逐字符的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.