Javascript 循环和数组

Javascript 循环和数组,javascript,arrays,loops,Javascript,Arrays,Loops,这段代码应该创建20个数组,每个数组具有不同的突变,并将这20个数组存储在另一个数组“突变”中。问题是,它的输出 [ [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 0, 2, 3, 4, 5, 6, 7, 8,

这段代码应该创建20个数组,每个数组具有不同的突变,并将这20个数组存储在另一个数组“突变”中。问题是,它的输出

[ [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ],
  [ 0, 2, 3, 4, 5, 6, 7, 8, 9 ] ]    
换句话说,它只更改一个数字,然后将该数字重复更改20次。如果可能的话,我想让每次迭代都存储变异,然后后续迭代建立在数组的初始变异的基础上。像这样:

[0,2,3,4,5,6,7,8,9]
->
[0,2,3,4,6,6,6,7,8,9]
->
[0,1,3,4,6,6,7,8,9]
-这样你就可以看到每次都有细微的变化

以下是目前的代码:

function concestor2() {
    this.genome = [1, 2, 3, 4, 5, 6, 7, 8, 9]; // the code to be scrambled
    this.replicability = 10;
}

var venutian = new concestor2();
venutian.scramble = parseInt(Math.random() * 10); //picks random number 1-10
venutian.scramble2 = venutian.scramble;

function scrambler(P1) {
    for (var i = 0; i <= 20; ++i) {
        P1.genome[P1.scramble] = P1.scramble2; //selects random element of array
    }

    return P1.genome;
}

scrambler(venutian);

var mutations = []; // array to store the 20 mutations from the loop

function createVariables() {
    for (var j = 0; j <= 20; ++j) {
        mutations[j] = scrambler(venutian);
    }

    return mutations;
}

createVariables();
console.log(venutian.genome)
console.log(mutations)
函数concestor2(){
this.genome=[1,2,3,4,5,6,7,8,9];//要加扰的代码
这是可复制性=10;
}
var venutian=新concestor2();
venutian.scramble=parseInt(Math.random()*10)//选择随机数1-10
venutian.scramble 2=venutian.scramble;
功能扰码器(P1){

对于(var i=0;i为什么扰码和扰码2具有完全相同的值?您不想使用两个不同的随机数吗?此外,您可能希望在每次调用扰码器时创建新的随机数。 createVariables可能应该是这样的

function createVariables() {
    mutations[0] = scrambler(venutian);
    for (var j = 1; j <= 20; ++j) {
        mutations[j] = scrambler(mutations[j-1]);
    }
    return mutations;
}
函数createVariables(){
突变[0]=扰频器(维努蒂安);

对于(var j=1;j也许是这样的

Javascript

function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
}

function getMutations(obj) {
    var mutations = [],
        last = obj.genome.length - 1,
        mutation,
        count,
        value,
        pos;

    for (count = 0; count <= 20; count += 1) {
        pos = getRandomInt(0, last);
        mutation = obj.genome.slice();
        mutation[pos] = getRandomInt(0, 9);
        mutations.push(mutation);
    }

    return mutations;
}

function concestor2() {
    this.genome = [1, 2, 3, 4, 5, 6, 7, 8, 9]; // the code to be scrambled
    this.replicability = 10;
}

var venutian = new concestor2();

console.log(getMutations(venutian));

上,你说得对。在我分配任务之前,我没有想过当你说每次创建新的随机数时,你的意思是我应该在扰码器循环中创建随机数吗?因为主要问题只是第一个随机分配的重复迭代。你能澄清一下,每个变异都是在原始的
上执行的吗是.genome
还是上一个“突变”?你的话似乎暗示了原文,但你的例子暗示了上一个?也是你的“随机”选择一个介于0和9之间的数字,而不是1和10。这个基因组只是一个每次都会发生突变的虚拟。重要的部分是将每个突变的结果记录到“突变”数组中。随机数是不相关的,但我想感谢你指出了这一点。我一直在更改代码并得到奇怪的结果,但从来没有得到我想要的我很聪明,很接近我要找的。我会从这里调整它,看看它会去哪里
[
    [6, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 7, 7, 8, 9],
    [1, 2, 1, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 7, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 3, 9],
    [1, 2, 3, 4, 5, 6, 7, 3, 9],
    [1, 2, 3, 4, 3, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 0, 9],
    [1, 2, 5, 4, 5, 6, 7, 8, 9],
    [1, 2, 5, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 1, 8, 9],
    [1, 2, 3, 4, 5, 3, 7, 8, 9],
    [1, 2, 3, 7, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 2, 6, 7, 8, 9],
    [5, 2, 3, 4, 5, 6, 7, 8, 9],
    [7, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 5, 4, 5, 6, 7, 8, 9],
    [1, 2, 4, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 0, 6, 7, 8, 9],
    [1, 2, 3, 5, 5, 6, 7, 8, 9],
    [1, 4, 3, 4, 5, 6, 7, 8, 9]
]