0
我正在使用Lodash _.isEqual深度比較本地JavaScript對象與通過角度$ get檢索到的另一個JavaScript對象。Lodash isEqual因角度定義構造函數而失敗
此代碼表示,對象是不同的:
$get({...}, function (data) {
cleanupAngularProps(data);
if (_.isEqual(data, {name: 'Someone'}) {
...
}
});
但換款就有點像現在跟隨它說,他們是平等的(如預期):
$get({...}, function (data) {
cleanupAngularProps(data);
if (_.isEqual(JSON.parse(JSON.stringify(data)), {name: 'Someone'}) {
...
}
});
我調試到Lodash代碼,它似乎失敗,因爲兩個對象有不同的構造函數。
如何在不克隆數據的情況下解決這個問題?
JSON.parse也將擺脫功能... – elclanrs
這有可能是原來'data'包含了這些功能,但是當你做'JSON.parse(JSON.stringify(數據)'創建相同的對象,但沒有函數。因爲在第一種情況下'isEqual'返回false,在第二個true。 – alexmac
'cleanupAngularProps'做什麼?您應該能夠從一個angularjs $ http獲得一個POJO和原始JSON請求將簡化與另一個POJO的比較 –