排序并打印随机数出现的次数
Sort and print number of occurences of random numbers
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 个数字的数组,但我不确定如何前进。
我尝试了多个 .includes、.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 = [];
}
}
}
}
}
如果我在“Number: 20 occurred 4 times”被打印后检查我的数组,我发现答案是正确的,问题是,有时它打印每个生成的数字 1 次,然后有时只打印那些生成的 2 次,等等。有时什么都不打印
已解决:
这段代码对我有用
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.`);
}
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 个数字的数组,但我不确定如何前进。 我尝试了多个 .includes、.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 = [];
}
}
}
}
}
如果我在“Number: 20 occurred 4 times”被打印后检查我的数组,我发现答案是正确的,问题是,有时它打印每个生成的数字 1 次,然后有时只打印那些生成的 2 次,等等。有时什么都不打印
已解决:
这段代码对我有用
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.`);
}