我正在尝试代码战中的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
答案 0 :(得分:1)
您在arr2.push(true);
或arr2.push(false);
返回Array#push的结果。 return value推送是
调用方法的对象的新长度属性。
因此,您的代码在第一次推送后返回1。