我正在尝试在代码战争中解决 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 的结果。推送的返回值为
调用该方法的对象的新 length 属性。
因此,您的代码在执行第一次推送后返回 1。