我正在尝试代码战中的6kyu问题,并且偶然发现了一个令人讨厌的错误,我无法找到它的根源。
任务的简要说明:“给两个数组a和b编写一个函数comp(a,b),该函数检查两个数组是否具有“相同”元素且具有相同的多重性。“相同”在这里表示元素b中的元素是平方的,与顺序无关。

我的代码似乎每次都返回1,即使不知为何,我也不知道为什么,我不是在寻找问题的答案,而只是解释为什么我的代码返回了它。
感谢您的任何帮助!

    function isTrue(el){
  return el === true;
}

function comp(array1, array2){
  var arr = array1.map(function(num){return num*num});
  var arr2 = [];
  for(var i = 0; i < arr.length; i++){
    if(array2.includes(arr[i])){
      return arr2.push(true);
    } else{
      return arr2.push(false);
    }
  }
  return arr2.every(isTrue) ? true : false;
}

comp([121, 144, 19, 161, 19, 144, 19, 11],[121, 14641, 20736, 361, 25921, 361, 20736, 361]);
//return value 1, should be true

最佳答案

您在arr2.push(true);arr2.push(false);返回Array#push的结果。推送的return value


  调用该方法的对象的新length属性。


因此,您的代码在执行第一次推送后返回1。

08-26 20:00
查看更多