循环"我"必须打破,当if语句循环" j"返回swap = false
,但它没有这样做,并继续完成所有arr.length
var arr = [0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13];
var n = arr.length;
var t;
var swap;
for (var i = 0; (i < n) && (swap = true); i++) {
for (var j = 0; j < ( n - (i + 1) ); j++) {
if ( arr[j] > arr[j + 1] ) {
t = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = t;
swap = true;
} else { swap = false }
}
};
答案 0 :(得分:0)
你可以使用休息;用于停止for()循环的语句 Have a look here
var arr = [0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13];
var n = arr.length;
var t;
var swap = true;
for (var i = 0; i < n; i++) {
if (!swap) {
break;
}
for (var j = 0; j < ( n - (i + 1) ); j++) {
if ( arr[j] > arr[j + 1] ) {
t = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = t;
} else {
swap = false;
}
}
};
alert(performance.now());
alert(arr);
&#13;
答案 1 :(得分:0)
这一行
for (var i = 0; (i < n) && (swap = true); i++) {
为swap指定一个值(即swap = true),而你实际上想要检查它的值(.i.e。swap === true)。
请注意,swap最初是未定义的,因此如果您根据上面的内容更改代码(swap === true),您可能需要在进入循环之前将其显式设置为true。
答案 2 :(得分:0)
correct answer by duncan smith
这一行
for (var i = 0; (i < n) && (swap = true); i++) {
为swap指定一个值(即swap = true),而你实际上想检查它的值(.i.e.swap === true)。
请注意,swap最初是未定义的,因此如果您根据上面的内容更改代码(swap === true),您可能需要在进入循环之前将其显式设置为true。