Javascript:通过在while循环内推送/拼接来随机化数组
Javascript: randomizing array by pushing/splicing inside while loop
我正在尝试随机化包含HTML元素的Javascript数组。这是我到目前为止所拥有的,但不幸的是,之后我仍然会得到几个重复项。我不明白这段代码有什么问题。有什么想法吗?
function randomizeArray(theArray)
{
var result = new Array();
var randomNr;
while ( theArray.length>0 )
{
randomNr = Math.floor( (Math.random() * theArray.length) );
result.push( theArray[randomNr] );
theArray.splice( randomNr, 1);
}
return result;
}
编辑:经过进一步审查,当我用数字数组测试它时,这段代码似乎按预期工作。出于某种原因,我的元素数组仍然重复。
查看这篇文章的最高答案:循环中的随机数
不同的语言,但理论是相同的。Math.random()
使用的种子编号每次都相同,并导致模式出现,这反过来又会产生您获得的副本。
代码按预期工作,问题是我的数组包含元素对象。一旦我将这些对象转换为相应的 html,并将它们用作数组中的项目,一切都很好。
相关文章:
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 了解JS数组和拼接
- 尝试对对象数组进行排序但拼接不是一个函数
- Javascript拼接对象而不是数组
- Javascript拼接数组值
- 嵌套在 ng 重复中的拼接数组
- 在javascript中拼接一个复杂的多维数组
- 从数组Javascript中拼接对象
- 基于属性值的拼接数组
- 使用一个字符串数组来拼接另一个数组
- 如何在javascript中拼接数组中的项
- 拼接数组的Javascript只是替换值而不是删除它
- 为什么在 Javascript 中拼接数组中的对象不返回数组
- 拼接数组返回空的序列
- angular-如果src错误,则在指令内部拼接数组
- 从数据中拼接数组
- 添加或拼接数组的Javascript函数
- Javascript拼接数组
- 拼接数组/效果
- 拼接数组中剩余的最后一个空白