我试图在一个新数组(multipleArrays)中创建n个数组。下一步是在那个multiArrays中查找重复项,并重复多少次。我正在使用2个功能。第一个是用48个数字中的35个数字创建主数组。第二个功能是将所有这些数组收集到一个数组中。
function createArray35() {
const array35 = [];
i = 0;
do {
var rng = Math.floor(Math.random() * 48) + 1;
if (!array35.includes(rng)) {
array35.push(rng);
i++;
}
}
while (i < 35)
return array35
}
createArray35();
function multipleArray(total_number) {
var arrayOfArrays = [];
for (z = 0; z <= total_number; z++) {
var array35 = createArray35();
arrayOfArrays.push(niz35)
}
return arrayOfArrays;
}
var total_arrays = 3; // total number of "array35" I want to ceate in
// "multipleArray"
console.log(multipleArray(arrayOfArrays));
预期结果应该是:
谢谢大家
答案 0 :(得分:0)
带注释的代码:
// This method of getting X unique numbers from Y set is recommended, because it has a stable execution time
function createArray35() {
// create a [1 .... 48] array
var candidates = Array.from({
length: 48
}).map((el, index) => index + 1);
var array35 = [];
for (var i = 0; i < 35; i++) {
// remove 1 random number from candidates
const positionToRemove = Math.floor(Math.random() * candidates.length);
const randomNum = candidates.splice(
positionToRemove,
1
)[0];
array35.push(randomNum);
}
return array35
}
function multipleArray(total_number) {
var arrayOfArrays = Array.from({
length: total_number
}).map(el => createArray35());
return arrayOfArrays;
}
function countDuplicates(arrayOfArrays) {
// Create an array of length 48 where each element is 0;
var counters = Array.from({
length: 48
}).map(el => 0);
// Each time a number appear, increase its corresponding counter by 1
for (var array of arrayOfArrays) {
for (var number of array) {
counters[number - 1] = counters[number - 1] + 1;
}
}
for (var i = 0; i < counters.length; i++) {
console.log(`Number ${i+1} is repeated ${counters[i]} times;`);
}
}
var total_arrays = 3;
var arrayOfArrays = multipleArray(total_arrays);
console.log(arrayOfArrays);
countDuplicates(arrayOfArrays);
答案 1 :(得分:0)
function createArray35() {
const array35 = [];
i = 0;
do {
var rng = Math.floor(Math.random() * 48) + 1;
if (!array35.includes(rng)) {
array35.push(rng);
i++;
}
}
while (i < 35)
return array35;
}
function CalculateCount(array){
var result = {};
for(let i=0;i<array.length;i++){
var obj = array[i].toString();
if(result[obj]){
result[obj] = result[obj]+1;
}
else{
result[obj] = 1;
}
}
return result;
}
function PrintResult(result){
for(var i in result){
console.log(`Number ${i} is repeated (${result[i]}) times;`);
}
}
var resultObject = CalculateCount(createArray35());
PrintResult(resultObject);