【发布时间】: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