如何从专用于 Javascript 中另一个函数的循环将值写入空数组?

问题描述 投票:0回答:1

我正在根据 Fisher Yates 方法对值进行随机排序,为了探索这个过程的内部,我尝试找出随机数(

arsam1
是数字固定集,
iValue1
jValue1
为空)数组应该填充序列号
i
和随机数
j
)。

我想在屏幕上打印数组

iValue1
jValue1

使用以下代码时,除了看到标题和按钮之外,我根本看不到任何数字。我哪里错了?

我编写了以下代码,我希望在第一个标题和按钮的顶部看到 3 行数字、随机数组、计数器数组

iValue1
和随机化器数组 Value。相反,我什么也没得到。

const arsam1 = [5, 10, 15, 18, 6, 3, 9, 23, 29, 17, 12, 40];
let iValue1 = [];
let jValue1 = [];
document.getElementById("demo").innerHTML = arsam2;

function myFunction() {
  for (let i = arsam1.length - 1; i > 0; i--) {
    let iValue1[i] = i;
    let j = Math.floor(Math.random() * (i + 1));
    let jValue1[i] = j;
    let k = arsam1[i];
    arsam1[i] = arsam1[j];
    arsam1[j] = k;
  }
}

document.getElementById("iValue").innerHTML = iValue1;
document.getElementById("jValue").innerHTML = jValue1;
<h1>string Templates</h1>
<p>check up string templates</p>
<p id="demo"></p>
<button onclick="myFunction()">Randomize</button>
<p id="iValue"></p>
<p id="jValue"></p>

javascript html arrays loops sorting
1个回答
0
投票

您需要在

iValue1
之外初始化
jValue1
myFunction
以在函数执行后保持它们的值,此外,在
for
循环内,您需要正确地将值设置为
iValue1
jValue1
数组。 完成上述操作后,您需要更新 HTML 模板以反映更改。

参考以下代码:

const arsam1 = [5, 10, 15, 18, 6, 3, 9, 23, 29, 17, 12, 40];
let iValue1 = [];
let jValue1 = [];

document.getElementById("demo").innerHTML = `Original Array: [${arsam1.join(', ')}]`; // Show Original Array

function myFunction() {
  for (let i = arsam1.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1));
    let temp = arsam1[i]; // Keep a temp variable to hold a value temperorily and swap.
    arsam1[i] = arsam1[j];
    arsam1[j] = temp;
    iValue1[i] = i; // Set iValue1 and jValue1 with current indexes
    jValue1[i] = j; // Set iValue1 and jValue1 with current indexes
  }
  document.getElementById("demo").innerHTML = `Shuffled Array: [${arsam1.join(', ')}]`;
  document.getElementById("iValue").innerHTML = `iValue1: [${iValue1.join(', ')}]`;
  document.getElementById("jValue").innerHTML = `jValue1: [${jValue1.join(', ')}]`;
}
<html>
<body>

  <h1>Shuffle Example</h1>
  <button onclick="myFunction()">Randomize</button>
  <p id="demo"></p>
  <p id="iValue"></p>
  <p id="jValue"></p>
</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.