为了账号安全,请及时绑定邮箱和手机立即绑定

对这个题目仍然存在疑惑,求助!

    <script type="text/javascript">           
    /*         
    * param1 Array          
    * param2 Array         
    * return true or false         
    * 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。这里可以运用sort()进行排序
    * 数组的长度一致,这里只要arr1.length=arr2.length         
    * 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.         
    * 这里意在针对每一个值都要精确到以上分类         
    */
    function arraysSimilar(arr1, arr2) 
    {
      answer = true;    
      //先判断是否是数组,因为大数组的最后三个并不是数组,而是单独的元素
      if (arr1 instanceof Array === true && arr2 instanceof Array === true) 
      {
       if (arr1.length == arr2.length) //先确定数组长度一致
         { 
         var arrType1 = [],arrType2 = [];
         for (var i = 0, len = arr1.length; i < len; ++i) 
         {
           arrType1[i] = Object.prototype.toString.apply(arr1[i]);
           arrType2[i] = Object.prototype.toString.apply(arr2[i]);
         } 
         arrType1.sort(), arrType2.sort(); //对数组进行无差别排序
         if (arrType1.toString() != arrType2.toString()) 
         {  
            answer = false;
          }} 
          else {answer = false}
         } 
     else 
     {answer = false; //因为看了js里面后三个都是false所以偷了个懒}
       return answer;
    }    
 </script>


正在回答

1 回答

最后虽然通过了,但是我有两个问题想请教大家;

  1. 对于最后三个数据的判断应该如何书写?观察了Typeof、instanceof和Object.prototype.toString:发现都没有很适合,还是说可以这么来,先判断类型是否一致,再判断值是否一致,因为最后一个数组是字符串;

  2. arrType2.toString()这个用法我在百度上查了是不好的用法,有更好的推荐嘛?for循环有点麻烦。对于为什么要对得到类型后的组合进行排序,是因为值就那么多,且在长度相同的情况下,肯定会对应的上的。但这里也存在不严谨,如果真的要十分严谨的话会非常复杂TT

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281119    人
  • 解答问题       1020    个

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

进入课程

对这个题目仍然存在疑惑,求助!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信