我正在尝试按降序返回一个数字数组(最大的在前面)。
我的功能似乎可以工作,但只是在中间退出。
let array = [1, 9, 8, 7, 2, 6, 3, 5];
let sorted = [];
function sortNumbers(array) {
for (var i = 0; i < array.length; i++) {
let max = array.reduce(function(a, b) {
console.log(`a: ${a} b: ${b}`);
return Math.max(a, b);
});
let maxIdx = array.indexOf(max);
let biggest = array.splice(maxIdx, 1);
sorted.push(biggest);
}
console.log('sorted array is: ', sorted.join(''));
//returns 9876
}
sortNumbers(array);
最佳答案
您遇到的问题是由循环内的拼接
引起的。您在遍历数组时更改数组。快速修复是向后循环遍历数组,以便在循环开始时设置正确的长度:
for (var i = array.length; i > 0; i--) {
// etc
}
let array = [1, 9, 8, 7, 2, 6, 3, 5];
let sorted = [];
function sortNumbers(array) {
for (var i = array.length; i > 0; i--) {
let max = array.reduce(function(a, b) {
console.log(`a: ${a} b: ${b}`);
return Math.max(a, b);
});
let maxIdx = array.indexOf(max);
let biggest = array.splice(maxIdx, 1);
sorted.push(biggest);
}
console.log('sorted array is: ', sorted.join('')); //returns 9876
}
sortNumbers(array);
关于JavaScript for 循环在中间停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690370/