在沒有Key或者Id的情況下,比對Object真的是世界上最噁心的一件事情了。
最簡單的方法是這個:
const object1 = {"Name": "Hello"};
const object2 = {"Name": "Hello"};
if(JSON.stringify(object1) === JSON.stringify(object2)){
return true;
}
很簡單對吧?然而世界沒有那麼美好。更多時侯你會遇到這種情況:
const object1 = {"Sex": "Girl", "Name": "Hello"};
const object2 = {"Name": "Hello", "Sex": "Girl"};
這種時侯用上一種方法是會Return False,失敗的。手寫排序Function是一種處理方法,但工時不足的情況下可以考慮用Sort Object這個模組解決問題:
const sortObj = require('sort-object');
const object1 = sortObj({"Sex": "Girl", "Name": "Hello"});
const object2 = sortObj({"Name": "Hello", "Sex": "Girl"});
if(JSON.stringify(object1) === JSON.stringify(object2)){
return true;
}
好了,輕鬆搞定。如果遇到更複雜的情況,需要深度比對的話,那就需要另一個名為Deep Equal的模組了。
const sortObj = require('sort-object');
const equal = require('deep-equal');
const object1 = sortObj({"Sex": "Girl", "Name": "Hello"});
const object2 = sortObj({"Name": "Hello", "Sex": "Girl"});
if(equal(object1) === equal(object2)){
return true;
}
過於依靠他人的模組是不好的事,但這是最簡單和最快的方法了。有空的時侯再研究一下怎麼手寫出同樣的功能吧!
◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣