记录到控制台的结果( answer )是正确的结果,但它是从未定义的函数中出来的。发生了什么事?
let sorted = [];
function reset(){
sorted = [];
}
function sort(list) {
let least = list[0];
for (let i = 0; i < list.length; i++){
if (list[i] < least ){
least = list[i];
}
}
sorted.push(least);
list.splice(list.indexOf(least),1);
if (list[0] !== undefined){
sort(list)
}
else {
let answer = sorted;
reset();
console.log(answer);
return answer;
}
}
let sampleArray = [3,2,1];
sort(sampleArray);
答案 0 :(得分:0)
在if
分支中,您正确地以递归方式调用sort
,但只是忽略返回的值而不是返回它。回来吧,你应该没问题:
if (list[0] !== undefined) {
return sort(list); // Here
}
else {
// Rest of your code...
答案 1 :(得分:0)
@Mureinik关于这个问题是正确的。但是,更重要的是,如果您想按递增顺序制作数组的排序副本,则可以使用.slice()
和.sort()
轻松完成此操作:
let sampleArray = [3, 1, 2];
// sorted array
let sortedArray = sampleArray.slice().sort((a, b) => a - b);
console.log(sortedArray);
// original array preserved
console.log(sampleArray);
(我现在收到500错误here's an alternative demo