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