Je vérifiait cette question Javascript Deep Comparison La solution du demandeur question ne m'a pas convaincu j'ai donc essayé d'analyser le problème et est venu avec cetteJavascript: Comparaison profonde
var obj = {here: 2};
console.log(deepEqual(obj, obj));
// → true
console.log(deepEqual(obj, {here: 1}));
// → false
console.log(deepEqual(obj, {here: 2}));
// → true
function deepEqual(a,b)
{
if((typeof a == 'object' && a != null) &&
(typeof b == 'object' && b != null))
{
var count = [0,0];
for(var key in a) count[0]++;
for(var key in b) count[1]++;
if(count[0]-count[1] != 0) {console.log('1');return false;}
for(var key in a)
{
if(!(key in b) || !deepEqual(a[key],b[key])) {console.log('2');return false;}
}
for(var key in b)
{
if(!(key in a) || !deepEqual(b[key],a[key])) {console.log('3');return false;}
}
}
console.log('a:'+a+' b:'+b);
return a===b;
}
obj === { here:2 }
Ce code ne passe pas le dernier test (console.log (deepEqual (obj, {ici: 2})))) mais la logique de considérer des objets profondément égaux s'ils ont respectivement des clés et des valeurs égales bien qu'ils soient des instances différentes en mémoire ne me convainc pas. Y a-t-il un problème avec ma «solution» ou l'erreur réside-t-elle dans les présomptions de l'exercice? Le code mentionné dans la question que j'ai liée est-il valide?
ressources qui hikinthru oublié de mentionner (http://eloquentjavascript.net/04_data.html#exercise_deep_compare)
On ne sait pas ce que vous demandez. Êtes-vous en train de dire que vous n'êtes pas d'accord avec ce que l'égalité profonde devrait signifier? –
Cela fait partie de ce que je demande. Ma solution préconisée est-elle incorrecte ou y a-t-il un problème avec la question? La dernière ligne montre que pour les navigateurs, même les objets avec les mêmes clés et leurs valeurs respectives ne sont pas strictement égaux. S'il vous plaît, s'il y a un problème avec la question, faites-le moi savoir et je le supprimerai. – zenwaichi
Eh bien votre fonction ne fait jamais 'return true' après avoir établi que les deux objets ont les mêmes propriétés ... – Bergi