洗牌数组在Javascript中给出相同的值
我正在制作一个随机数组生成器,将一个初始数组多次洗牌 洗牌功能洗牌数组在Javascript中给出相同的值,javascript,arrays,sorting,random,shuffle,Javascript,Arrays,Sorting,Random,Shuffle,我正在制作一个随机数组生成器,将一个初始数组多次洗牌 洗牌功能 const shuffle =(array) => { let currentIndex = array.length, temporaryValue, randomIndex; while (0 !== currentIndex) { randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1;
const shuffle =(array) => {
let currentIndex = array.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
生成染色体(此函数生成从初始序列随机化而来的一组数组“序列”)
const generateChromosomes=(染色体数)=>{
常量结果=[];
常量序列=[“2”、“3”、“4”];
for(设i=1;i
我不知道为什么,每次运行它时,都没有得到不同的数组。我得到50倍于同一个。当我重新运行代码时,它会给我另一个代码的50倍。很简单,我猜这个问题与数组引用有关。 将序列数组移动到循环中,以便禁用referer并通过变量的静态值设置洗牌
const generateChromosomess = (numberOfChromosomes) => {
const result = [];
for(let i = 1; i < numberOfChromosomes; i++){
const sequence = ["2", "3", "4"]; // MOVE YOUR ARRAY HERE.
result.push(shuffle(sequence))
}
return(result);
}
或
或(通过lodash
)
JSON.parse(JSON.stringify(anything))
很少有用。但是仍然可以安全使用,并且在任何浏览器中都支持。它是安全的,除非数组或对象包含对JSON.stringify()
不会触及的对象的引用,例如日期实例或函数,或者如果源对象具有循环引用。谢谢,这就解决了问题
const generateChromosomess = (numberOfChromosomes) => {
const result = [];
for(let i = 1; i < numberOfChromosomes; i++){
const sequence = ["2", "3", "4"]; // MOVE YOUR ARRAY HERE.
result.push(shuffle(sequence))
}
return(result);
}
JSON.parse(JSON.stringify(value))
[...value]
_.clone(array)