如何在JavaScript中将一个数组的元素复制到另一个数组中?

3

我有一个函数,它会从arrayVariable中随机选择值并将它们分配给段落元素p[i]。

我想将随机选择的值复制到另一个数组b[i]中。

我该如何做?

function rvalue() {
  var arrayVariable = ['1', '2', '3', '4', '5']
  arrayLength = arrayVariable.length;

  ptags = document.getElementsByName("values");
  for (i = 0; i < ptags.length; i++) {
    ptags[i].innerHTML = arrayVariable[Math.floor(Math.random() * arrayLength)];

  }
}
p {
  font-size: 2xpx;
  color: #000000;
 
}
<body onload="rvalue()">
<p name="values"></p>
</div>
<p name="values"></p>
</div>
<p name="values"></p>
</div>

</div>


当前代码有什么问题?您能解释一下期望的输出吗? - Just code
创建另一个数组[],并将每个arrayVariable[Math.floor(Math.random() * arrayLength)]推入其中。 - Chris Li
它可以工作,我想要创建另一个由随机选择的值组成的数组。 - dev maddy
你提供的代码期望得到什么输出? - Chris Li
5个回答

1
为了向HTML元素插入文本,最好使用textContent而不是innerHTML
创建一个数组来推入每次迭代中的textContent

function rvalue() {
  var array = [];
  var arrayVariable = ['1', '2', '3', '4', '5']
  arrayLength = arrayVariable.length;

  ptags = document.getElementsByName("values");
  for (i = 0; i < ptags.length; i++) {
    ptags[i].textContent = arrayVariable[Math.floor(Math.random() * arrayLength)];
    array.push(ptags[i].textContent);
  }
  console.log(array);
}
p {
  font-size: 20px;
  color: #000000;
}
<body onload="rvalue()">

  <p name="values"></p>
  <p name="values"></p>
  <p name="values"></p>

</body>

请注意:您的HTML没有开头的
元素,而具有无效值(2xpx)。

0

它将通过indextempArray中存储值,您可以使用Array.push来进行正常插入,以替换tempArray[index] = arrayVariable[index];

tempArray.push(arrayVariable[index]);

如果您使用.push方法可能会在array中获得重复值,那么只需使用此代码来删除重复条目。

tempArray= tempArray.filter(function(val, i){
  return tempArray.indexOf(val)== i; 
});

function rvalue() {
    var arrayVariable = ['1', '2', '3', '4', '5']
    arrayLength = arrayVariable.length;
    var tempArray = [];

    ptags = document.getElementsByName("values");
    for (i = 0; i < ptags.length; i++) {
        var index =
            Math.floor(Math.random() * arrayLength);
        ptags[i].innerHTML = arrayVariable[index];
        tempArray[index] = arrayVariable[index];

    }
    console.log(tempArray);
}
p {
  font-size: 2xpx;
  color: #000000;
 
}
<body onload="rvalue()">
<p name="values"></p>
</div>
<p name="values"></p>
</div>
<p name="values"></p>
</div>

</div>


0

像这样

function randomizeParagraphs() {
    var possibleValues = ['1', '2', '3', '4', '5'],
        createdValues = [], // Empty array to store created values.
        pTags = document.getElementsByName("values");

    for (var i = 0; i < pTags.length; i++) {
        var item = possibleValues[Math.floor(Math.random() * possibleValues.length)];
        ptags[i].innerHTML = item;
        createdValues.push(item);
    }

    // Log the created values.
    console.log(createdValues);
}

0

嘿,你可以像这样分配获取值:

function rvalue() {
  var arrayVariable = ['1', '2', '3', '4', '5']
  arrayLength = arrayVariable.length;

  arrRandomGeneratedValue = [];
  ptags = document.getElementsByName("values");
  for (i = 0; i < 5; i++) {
    randomGeneratedValue = arrayVariable[Math.floor(Math.random() * arrayLength)];
    ptags[i].innerHTML = randomGeneratedValue;
    arrRandomGeneratedValue.push(randomGeneratedValue);

  }
 return arrRandomGeneratedValue;
}

rvalue();

0

嗯,我不知道我是否理解了,但如果您想保存随机值,请在要用作存储的新数组变量中使用push方法。

  function rvalue() {
  var b = [];
 var arrayVariable = ['1', '2', '3', '4', '5']
 arrayLength = arrayVariable.length;

   ptags = document.getElementsByName("values");
   for (i = 0; i < ptags.length; i++) {
   ptags[i].innerHTML = arrayVariable[Math.floor(Math.random() * arrayLength)];
   b.push(ptags[i].innerHTML);  
 }
 }

希望这就是你在寻找的东西 :P 祝好!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接