【问题标题】:Organising numbers into new array, while-loop issue [duplicate]将数字组织成新数组,while循环问题[重复]
【发布时间】: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) =&gt; a-b); console.log(organisedNumbers);
  • 是的,你永远不会在 while 循环中得到一个新的温度,也永远不会停止

标签: javascript arrays while-loop


【解决方案1】:

像这样返回它:

randomNumbers.sort((a,b) =&gt; a &gt; b ? 1 : a &lt; b ? -1 : 0);

【讨论】:

  • 1.巨大的重复。 2.你改变了原来的
【解决方案2】:

您可以使用排序功能:

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 = randomNumbers.sort((a, b) => b - a);

console.log(organisedNumbers)

【讨论】:

  • 1.巨大的骗子和2。你改变了原来的。原地排序作品
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2020-10-28
  • 2012-02-24
  • 2017-06-22
  • 2015-09-12
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多