【发布时间】:2019-06-28 08:16:38
【问题描述】:
我想按从高到低的顺序组织 randomNumbers 中的数字(包括重复数字)并将它们插入到有组织的数字中。
我认为是我的 while 循环把它扔掉了,但我不明白为什么。
let randomNumbers = [9, 2, 6, 8, 52, 56, 7, 43, 56, 31, 48, 3, 6, 8, 4, 1, 3, 4, 5, 17, 25];
let organisedNumbers = [];
function unjumbleTwo(sourceArray, resultArray) {
for (let i = 0, next = false; i < Math.max(...sourceArray); next === true) {
next = false;
let temp = sourceArray[sourceArray.indexOf(i)];
while (typeof temp === 'number') {
resultArray.push(temp);
}
next = true;
}
};
unjumbleTwo(randomNumbers, organisedNumbers);
console.log(organisedNumbers);
编辑:“我”从未改变。修复并去掉了“next === true, false”。
function unjumble(sourceArray,resultArray){
for (let i = 0; i < Math.max(...sourceArray); i++){
let temp = sourceArray[sourceArray.indexOf(i)];
while (typeof temp === 'number'){
resultArray.push(temp);
}
}
};
unjumble(randomNumbers,organisedNumbers);
console.log(organisedNumbers);
【问题讨论】:
-
嘿,你为什么要手动操作?有库或本机方法可以做到这一点。看看 sort() 方法
-
我认为 for 循环被滥用了。
next === true对我来说似乎很奇怪 -
你在哪里换i?
-
const organisedNumbers = [9, 2, 6, 8, 52, 56, 7, 43, 56, 31, 48, 3, 6, 8, 4, 1, 3, 4, 5, 17, 25].slice(0).sort((a,b) => a-b); console.log(organisedNumbers); -
是的,你永远不会在 while 循环中得到一个新的温度,也永远不会停止
标签: javascript arrays while-loop