javascript - Javascript | Generate number
问题描述
I'm About writing a JavaScript code that generate an array allColumns
contain a specific number of others arrays,
the inside arrays contain a specific numbers of INT selected randomly;
The problem
This Code generate duplicated arrays , i don't know why! any help ?
function randomNumberFromRange(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
get_random = function (list) {
return list[Math.floor((Math.random() * list.length))];
}
function getSum(total, num) {
return total + num;
}
let columnLenght = 3;
let i = 0;
let j = 0;
let tableColumns = 3;
let allColumns = [];
let prevNumber = [];
let prevResult = 0;
while (j < tableColumns) {
while (i < columnLenght) {
if (prevNumber === undefined || prevNumber.length == 0) {
let randomNumber = get_random([1, 2, 3, 4], i);
$('.testcontent').append('<h6 class="row">' + randomNumber + '</h6>');
prevNumber.push(randomNumber);
} else {
prevResult = prevNumber.reduce(getSum);
if (prevResult == 0) {
let randomNumber = get_random([0, 1, 2, 3, 4]);
$('.testcontent').append('<h6 class="row">' + randomNumber + '</h6>');
prevNumber.push(randomNumber);
}
if (prevResult == 1) {
let randomNumber = get_random([-1, 0, 1, 2, 3]);
$('.testcontent').append('<h6 class="row">' + randomNumber + '</h6>');
prevNumber.push(randomNumber);
}
if (prevResult == 2) {
let randomNumber = get_random([-2, -1, 0, 1, 2]);
$('.testcontent').append('<h6 class="row">' + randomNumber + '</h6>');
prevNumber.push(randomNumber);
}
if (prevResult == 3) {
let randomNumber = get_random([-3, -2, -1, 0, 1]);
$('.testcontent').append('<h6 class="row">' + randomNumber + '</h6>');
prevNumber.push(randomNumber);
}
if (prevResult == 4) {
let randomNumber = get_random([-4, -3, -2, -1, 0]);
$('.testcontent').append('<h6 class="row">' + randomNumber + '</h6>');
prevNumber.push(randomNumber);
}
}
i++;
}
console.log(prevNumber);
allColumns.push(prevNumber);
j++;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
解决方案
因为您不会在每个新行上重置数组。您继续添加到同一个数组并继续将其附加到另一个数组。因此,当您开始一行循环时,请创建一个新数组以推入。
while (j < tableColumns) {
let prevNumber = []; // redefine your array on each row
let i = 0 // reset i
while (i < columnLength) { // <-- spelling error
/* code */
}
allColumns.push(prevNumber);
j++;
}
不知道你为什么不使用 for 循环
for (let j=0; j < tableColumns; j++) {
const prevNumber = []
for (let i=0; i < columnLength; i++) {
/* code */
}
allColumns.push(prevNumber);
}
推荐阅读
- scala - 在 Play 中保持 SSE 连接的正确方法
- ruby - 如何获得当前和上一个财政年度的红宝石?
- python - 如何在python中使用csv包逐行写入CSV
- compilation - 如何为 Windows 7 创建 COFF 可执行文件(不是库)
- php - 如何通过单击按钮更新一行数据
- java - 我不知道如何设置图片,从本地图书馆选择
- css - 字体真棒背景颜色溢出
- c - 为什么 bits/libc-header-start.h 文件夹包含在 stdio.h 头文件中
- node.js - Python3 flask_socketio 和节点。js 套接字。IO如何正确建立连接?
- html - 是否可以通过页面导航将 XML 拆分为多个 HTML 页面?