第二个数组的每个元素是否等于第一个数组元素的平方(CODEWARS)

时间:2017-07-12 02:52:09

标签: javascript arrays debugging compare

我正在尝试代码战中的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

1 个答案:

答案 0 :(得分:1)

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

  

调用方法的对象的新长度属性。

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