<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> var obj1={ x:100, y:{ a:100, b:200 } }; var obj2={ x:100, y:{ a:100, b:200 } }; console.log(isEqual(Number('wq'),Number('wq'))); console.log(isEqual([1, 2, 3],{0: 1, 1: 2, 2:3})); function isObject(obj){ if(typeof obj === 'object' && typeof obj!= null){ return true; } return false; } function isArray(obj){ return obj instanceof Array; } function isEqual(obj1,obj2){ //類型比較 // 若是又任何一方不是object,則自行比較 if(!isObject(obj1) || !isObject(obj2)){ // 用object.is()會更好,避免出現NaN===NaN爲false的狀況 return Object.is(obj1) === Object.is(obj2); // return obj1===obj2; } if(isArray(obj1)!==isArray(obj2)){ return false; } // 傳入的同一個對象 if(obj1===obj2){ return true; } // 長度比較 var len1 = Object.keys(obj1).length;//[x,y] var len2 = Object.keys(obj2).length;//[x,y] if(len1!==len2){ return false; } // 值比較 for(var key in obj1){ var result=isEqual(obj1[key],obj2[key]); if(!result){ return false; } } return true; } </script> </body> </html>