// sorting an array
const least_num = (arr)=>{
let smallest = arr[0];
let smallest_index = 0;
for(let i=1; i<arr.length;i ){
if (arr[i] < smallest) {
smallest = arr[i];
smallest_index = i;
}
}
return smallest_index
}
const sortArray = (arr)=>{
const newArr = [];
for(let i in arr){
let smallest = least_num(arr);
console.log(smallest,i)
console.log(arr.splice(smallest,1),arr)
}
return newArr;
}
console.log(sortArray([5,4,3,2,1]));
我正在嘗試在沒有 sort() 的情況下對陣列進行排序。它停留在陣列長度為 2。這可能是因為 for 回圈。以及如何使用索引洗掉陣列中的元素。
uj5u.com熱心網友回復:
幾個問題:
該代碼從不向 中添加任何內容
newArr,因此該函式始終回傳一個空陣列。它應該將移除(拼接)的元素添加到newArr. 這可以通過newArr.push(...arr.splice(smallest,1))for..in回圈的迭代次數比預期的要少,因為在每次迭代中陣列都會變短,從而消除回圈的未來迭代。由于想法是從陣列中洗掉所有專案,因此只需繼續回圈直到陣列為空while (arr.length)
通過這兩個更正,您的代碼可以作業:
const least_num = (arr)=>{
let smallest = arr[0];
let smallest_index = 0;
for(let i=1; i<arr.length;i ){
if (arr[i] < smallest) {
smallest = arr[i];
smallest_index = i;
}
}
return smallest_index
}
const sortArray = (arr)=>{
const newArr = [];
while(arr.length) {
let smallest = least_num(arr);
console.log(smallest)
newArr.push(...arr.splice(smallest,1));
console.log(arr)
}
return newArr;
}
console.log(sortArray([5,4,3,2,1]));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/506628.html
標籤:javascript 数组 排序
上一篇:如何將排序表索引作為字串回傳?
