我需要比較對象以瞭解哪些屬性發生了更改以及添加了哪些屬性。 是否有任何代碼片段會遍歷整個對象及其屬性,並在存在任何更改時發出警報,並繼續其處理直至結束。需要比較相同類型的對象以瞭解javascript中的差異
考慮我需要比較其父面板顯示和隱藏事件前後extjs中的網格面板(對象)。
在此先感謝
我需要比較對象以瞭解哪些屬性發生了更改以及添加了哪些屬性。 是否有任何代碼片段會遍歷整個對象及其屬性,並在存在任何更改時發出警報,並繼續其處理直至結束。需要比較相同類型的對象以瞭解javascript中的差異
考慮我需要比較其父面板顯示和隱藏事件前後extjs中的網格面板(對象)。
在此先感謝
如果您只是想檢查,如果同一類的兩個對象不同:
function differ(a, b) {
for (var i in a) {
if (a.hasOwnProperty(i) && b.hasOwnProperty(i) && a[i] === b[i]) {
return true;
}
}
return false;
}
a = {foo: 1, bar: 2};
b = {bar: 2};
alert(differ(a, b) ? "Objects differ" : "Objects are the same");
如果不是你以後,更詳細地解釋你的問題。
我在將對象添加到數組時遇到了類似的問題。我想確定,同一個對象不會被添加兩次。
我發現了一個輔助函數爲ExtJS的其中實現了基於由所述對象包含的值進行比較的對象的函數:
https://github.com/nmishra/helpers.js
然後,它可以使用這樣的:
var obj1 = {foo: 'bar'},
obj2 = {foo: 'bar'},
equality = Ext.ux.util.Object.compareObject(obj1, obj2);
console.log(equality);
是的,這個「聞起來」像你在這裏錯誤的軌道 – 2011-01-28 17:12:15