习题代码只输出了第一个case判断结果,后面的就没出来了???

来源:1-6 编程练习

拾叁叁

2017-10-24 15:45

//img2.mukewang.com/59eeef760001a63206090773.jpg

问题如题目,是什么原因呢??求大神帮帮忙~~

写回答 关注

3回答

  • MakeA_Pile
    2018-02-01 15:51:59

    for循环里面的i、j不加var关键字,则为全局变量,到case2时这个i==case1.arr1.length

  • Hendry2008
    2017-10-24 23:40:05

    思路是判断两个数组中每种类型的元素个数相同则判断数组相似 

    function arraysSimilar(x, y) {
    
      // 判断是否都是数组
      if (!x instanceof Array || !y instanceof Array) {
        return false;
      }
    
      // 判断数组长度是否一致
      if (x.length != y.length) {
        return false;
      }
    
    
      // 获取数组元素的具体类型 , 按要求分类
      // 如果每种类型的元素个数相同则判断数组相似
      types_of_x = getTypes(x);
      types_of_y = getTypes(y);
      // console.log(getTypes(x))
    
      // 对这两个数组的类型进行比较, 如果某个类型的元素个数不同则直接false
      result = true
    
      for(k in types_of_x) {
        if(types_of_x[k] != types_of_y[k]){
          result = false ;
          // console.log( k + " elements count not equal");
          break;
        }
      }
    
      return result;
    }
    
    function getTypes(target) {
      types_of_target = {
        "number": 0,
        "string": 0,
        "boolean": 0,
        "undefined": 0,
        "function": 0,
        "null": 0,
        "date": 0,
        "array": 0,
        "other": 0,
      }
    
      //target 是数组, 直接用map遍历
      //typeof 返回的是基本数据类型(string, boolean ,number,undefined,) + function + object
      //object 需要单独拿出来,除object需要进一步instanceof外 , 其他都只需要typeof即可
    
      target.map(function (element) {
        //对象类型
        if (typeof(element) == "object") {
          // 对基本类型 null 进行单独处理, 因为typeof(null) 的输出是object
          if (element == null) {
            return types_of_target['null']++;
          }
    
          //判断对象类型的, 具体类别
          if( element instanceof Date) {
            return types_of_target["date"] ++ ;
          }
    
          //数组类型
          if( element instanceof Array ) {
            return types_of_target["array"] ++;
          }
    
          //如果不是以上类型 , 则是其他对象类型
          return types_of_target["others"] ++;
    
        } else
        {
    
          //除对象类型外 , 基本类型(除null外), 还有function 类型, 直接赋值
    
          type = typeof (element)
          // console.log("element " + element + " type is "+ type)
          if (!types_of_target[type]) {
            types_of_target[type] = 1;
          } else {
            types_of_target[type]++;
          }
        }
    
      })
    
      return types_of_target;
    
    }
    
    arr_1 = [1, true, new Date(), undefined, function fun() {
    }, [1, 2, 3], false, "yes"];
    
    arr_2 = [false, 2, "no", 45, 67, 89, true, 1]
    
    arr_3 = [false, 20, "yes", 45, 67, 79, 1,false]
    
    console.log(arraysSimilar(arr_2, arr_3));
    
    console.log(arraysSimilar(arr_1, arr_3));


  • 有无上涯
    2017-10-24 17:31:15

    哪里有case呀。。

JavaScript深入浅出

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

281112 学习 · 1020 问题

查看课程

相似问题