【问题标题】:Sort and print number of occurences of random numbers排序并打印随机数的出现次数
【发布时间】:2021-02-15 03:31:40
【问题描述】:
const randomNum = [];

for (let i = 0; i <= 20; i += 1) {
  randomNum.push(Math.floor(Math.random() * 20 + 1));
}

然后

function getOccurrence(array, value) {
  return array.filter((x) => x === value).length;
}

我的目标是打印出类似的东西

Number 1, 6, 12, 3, 9 occurred 1 times.
Number 2, 5, 7, 19, 17 occurred 2 times.
Number 15, 11 occurred 3 times. 

等等。

知道我应该怎么做吗?

我正在考虑制作一个函数,类似于

function numberOccurrence(arr, arrLength){

}

所以我将来可以用 x 数量的数字向它提供任何数组,但我不确定如何前进。 我尝试了多个 .include、.indexOf、ifs 等,但我觉得卡住了,谁能给我一个正确的方向?

我觉得有一个循环来计算 1 出现的次数,然后将其保存到这样的对象中

numObj = {
1: 2,
2: 1,
3: 4,
}

函数运行后立即构建对象的位置,它基于 arrLength 参数构建它,我在开始时提供函数。

感谢,谢谢!

更新: 我有时会用这个打印出部分答案:

function getOccurrence(array, value) {
  return array.filter((x) => x === value).length;
}

for (let i = 1; i <= randomNum.length; i += 1) {
  let numOccurr = [];
  for (let j = 1; j <= randomNum.length; j += 1) {
    if (randomNum.includes(j)) {
      if (getOccurrence(randomNum, j) === i) {
        numOccurr.push(j);
        if (j === randomNum.length) {
          printOut(`Number: ${numOccurr.join(', ')} occurrs ${i} times.`);
          numOccurr = [];
        }
      }
    }
  }
}

如果我在打印“数字:20 次发生 4 次”后检查我的数组,我发现答案是正确的,问题是,有时它会打印生成 1 次的每个数字,有时只打印生成 2 次的数字,等等在。有时什么都没有打印出来

【问题讨论】:

    标签: arrays loops sorting random include


    【解决方案1】:

    已解决:

    这段代码对我有用

    const randomNum = [];
    
    for (let i = 0; i < 20; i += 1) {
      randomNum.push(Math.floor(Math.random() * 20 + 1));
    }
    
    function getOccurrence(array, value) {
      return array.filter((x) => x === value).length;
    }
    
    for (let i = 1; i <= randomNum.length; i += 1) {
      const numOccurr = [];
      for (let j = 1; j <= randomNum.length; j += 1) {
        if (randomNum.includes(j)) {
          if (getOccurrence(randomNum, j) === i) {
            numOccurr.push(j);
          }
        }
      }
      if (numOccurr.length !== 0)
        printOut(`Number: ${numOccurr.join(', ')} occurred ${i} times.`);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 2013-04-05
      相关资源
      最近更新 更多