美文网首页
2020-05-27 5 kyu Deep comparison

2020-05-27 5 kyu Deep comparison

作者: 苦庭 | 来源:发表于2020-05-28 05:54 被阅读0次

    https://www.codewars.com/kata/53c235e4d5cd9c397200021d

    My answer / AC

    function deepCompare(o1, o2) {
      if(o1===undefined && o2===undefined) return true;
      if(o1===[] && o2===[]) return true;
      if(o1===null && o2===null) return true;
      if((o1===null && o2===undefined) || (o1===undefined && o2===null)) return false;
      if(o1===o2) return true;
      if(Array.isArray(o1) && Array.isArray(o2)) {
        var val1= Object.values(o1).toString();
        var val2= Object.values(o2).toString();
      } else {
        var val1= Object.values(o1).sort().toString();
        var val2= Object.values(o2).sort().toString();
      }
      var keys1= Object.keys(o1).sort().toString();
      var keys2= Object.keys(o2).sort().toString();
      return (val1==val2 && keys1==keys2);
    };
    

    怎么不好?

    • 纯粹是面对test编程,没有算法思想可言

    Best answer

    function deepCompare(o1, o2) {
      if (o1 === o2) return true;
      if (typeof o1 !== 'object' || typeof o2 !== 'object') return false;
      if (Object.keys(o1).length !== Object.keys(o2).length) return false;
      var keys = Object.keys(o1);
      return keys.every(function(key) {
        return deepCompare(o1[key], o2[key]);
      });
    };
    

    好在哪?

    • 用了递归!!本来我也想用递归啊,但是我不会。
    • 反复多跟着写几遍吧。。

    Recap

    遇到有嵌套(比如这里是对象中嵌套对象)的,首先考虑递归哦!

    相关文章

      网友评论

          本文标题:2020-05-27 5 kyu Deep comparison

          本文链接:https://www.haomeiwen.com/subject/mhnnahtx.html