当我在if语句中得到错误结果时,我试图停止循环,但是它不起作用,我看不到我错过了什么。我添加了一个标签,希望这将是解决方案,但仍然没有。
let a1 = [1321, 144, 19, 161, 19, 144, 19, 11];
let a2 = [11*11, 121*121, 144*144, 19*19, 161*161, 19*19, 144*144, 19*19];
function comp(a,b){
a.sort()
b.sort()
var result = true;
if ( a === null || b === null) { return !result }
if( a.length < 1 || b.length < 1 ) { return !result }
loop_label: for (var i =0; i < a.length; i++) {
console.log(a[i]*a[i], b[1],(a[i]*a[i]) == b[i])
if(!(a[i]*a[i]) == b[i]) {
return !result;
break loop_label;
}
}
return result;
};
相反,它会继续循环并在结束时返回true,但是当其中一个评估为false时,我希望它返回false。
答案 0 :(得分:1)
你的if必须是这样的:
if(a[i]*a[i] != b[i]) {
return !result;
}
你甚至不需要label
和break
,因为返回已经离开了你的功能,因此循环显然会停止。
答案 1 :(得分:1)
未达到break loop_label;
,因为上面的行是:return !result
。结束对comp
的调用,返回值为!result
。
如果实际应用了中断,将会返回相反的内容,并且会返回result
(不会被否定,方法的最后一行)。
因此,请考虑在循环中删除return !result;
行,或将其更改为return result;
,使其与最终返回相同 - 以所需的行为为准。
答案 2 :(得分:0)
为什么你不这样结构,if
将跳过,else
会做你想要的
if(!(a[i]*a[i]) == b[i]) {}
else{
// do something here
}