{"ScriptPreparationCode":"var objArr1 = [{},{\r\n a: 1,\r\n b: 2,\r\n c: 3,\r\n d: 4,\r\n e: 5,\r\n},{a:undefined}]\r\nvar objArr2 = [{a:null},{\r\n e: 5,\r\n b: 2,\r\n a: 1,\r\n d: 4,\r\n c: 3,\r\n},{}]\r\nfunction mapStringifySort($objArr1, $objArr2) {\r\n $objArr1 = $objArr1.map(obj=\u003EJSON.stringify(obj)).sort()\r\n $objArr2 = $objArr2.map(obj=\u003EJSON.stringify(obj)).sort()\r\n for (let i=0; i\u003C$objArr1.length; i\u002B\u002B){\r\n if($objArr1[i]!==$objArr2[i]) return false\r\n }\r\n return true\r\n}\r\nfunction multipleLoops($objArr1, $objArr2) {\r\n const has = Object.prototype.hasOwnProperty\r\n let bArray, sArray, foundSArrayIdxs = {}\r\n if($objArr2.length\u003E$objArr2.length) {\r\n bArray = $objArr2\r\n sArray = $objArr1\r\n } else {\r\n bArray = $objArr1\r\n sArray = $objArr2\r\n }\r\n return bArray.every(($obj1)=\u003E{\r\n let $obj1Keys = Object.keys($obj1)\r\n let $obj1Len = $obj1Keys.length\r\n return sArray.some(($obj2, sidx)=\u003E{\r\n if(foundSArrayIdxs[sidx]) return false\r\n for(let i=0; i\u003C$obj1Keys.length; i\u002B\u002B) {\r\n let key = $obj1Keys[i]\r\n if($obj2[key]!==$obj1[key]) {\r\n return false\r\n }\r\n if(!has.call($obj2,key)) {\r\n return false\r\n }\r\n }\r\n let found = $obj1Len===objectLength($obj2)\r\n if(found) {\r\n foundSArrayIdxs[sidx] = true\r\n }\r\n return found\r\n })\r\n })\r\n}\r\nfunction objectLength(obj) {\r\n let i = 0;\r\n for(let k in obj){\r\n i\u002B\u002B\r\n }\r\n return i\r\n}","TestCases":[{"Name":"Map-JSON.stringify \u002B Sort","Code":"for(let i=0; i\u003C10000; i\u002B\u002B) {\r\n console.log(mapStringifySort(objArr1,objArr2))\r\n}","IsDeferred":false},{"Name":"Multiple Loops","Code":"for(let i=0; i\u003C10000; i\u002B\u002B) {\r\n console.log(multipleLoops(objArr1,objArr2))\r\n}","IsDeferred":false}]}