我在試圖找到比較兩個json對象的更快的方法。目前,我們有一個函數,其中有大約7個$ .each()調用,我相信這是一個非常低效的方法,但我不知道如何更快地完成它。我將發佈我們的比較兩個對象的函數,以及兩個對象的示例。比較兩個JSON對象
這只是來自對象1的一段數據。在整個對象中有4000個。
{
"aaData": [
{
"serial":"LRRFNGHX",
"model":"Dell Optiplex",
"os":"Windows NT",
"man":"Dell",
"group":"558D",
"pcName":"LID93740SHD0",
"department":"HR",
"customerName":"Bill gates",
"username":"bgates",
"deployLocation":"Chicago, IL",
"currentLocation":"127.0.0.1",
"cnStatus":"Usable",
"previousModel":"Gateway",
"id":"256",
"enabled":"false"
}
]
}
這是來自對象2的一個值。該對象相當小,在對象2中最多隻有100個值。
{
"team": {},
"department": {
"Automotive": "Automotive"
},
"os": {},
"man": {},
"model": {},
"cnStatus": {
"Usable": "Usable"
}
}
這是有史以來最醜陋的功能。這兩個對象進行比較,並設置在較大的對象適用於所有的比賽啓用的屬性:
function objCompare(){
newTotal = 0;
var typeCount = 0;
var menuArray = [];
console.log(JsonObj);
$.each(menuObject, function (i, type){
var empty = jQuery.isEmptyObject(type);
if(empty === false){
if(typeCount == 0){
$.each(type, function (j, subtype){
menuArray.push(subtype);
$.each(JsonObj, function(key, element){
element.enabled = "false";
$.each(element, function(key, subelement){
if((subelement != null) && (menuArray.contains(subelement.replace(/\s/g, '')))){
element.enabled = "true";
}
});
});
});
}else if(typeCount >= 1){
$.each(type, function (j, subtype){;
menuArray.push(subtype);
});
$.each(JsonObj, function(key, element){
if((element.enabled === "true") && !menuArray.contains(element[i])){
element.enabled = "false";
}
});
}
typeCount++;
}
if(empty === true){
if(typeCount === 0){
$.each(JsonObj, function(key, element){
element.enabled = "false";
});
}
}
});
}
什麼你想真正瞭解在兩個對象的比較呢?你遺漏了那些重要的細節!你想知道每個對象的鍵和值都完全相同嗎?如果一個對象具有另一個對象中不存在的額外鍵,該怎麼辦?你是否需要進行深入的嵌套比較,以便如果有一個對象數組,那麼該數組或對象的內容與另一個對象中的內容相同? – jfriend00
我想知道對象1中是否存在與對象2中的屬性相匹配的屬性。這需要進行深入的比較。並且鍵的數量應該沒有關係,只需要查看該鍵的值是否存在於其他對象中的任何位置,然後將其屬性設置爲「true」 –
您是否想知道屬性是否存在於兩個對象中?或者如果該屬性的屬性和值在兩個對象中都是相同的?你在尋找一個特定的房產名稱嗎?或者只是'obj1'中的任何屬性也存在於'obj2'中的對象的任何深度?你是否忽略了比較中不想要的任何特定屬性名稱? – jfriend00