Javascript 为什么我的输入被插入到两个具有相同索引的diff数组中?(js)

Javascript 为什么我的输入被插入到两个具有相同索引的diff数组中?(js),javascript,arrays,indexing,insert,Javascript,Arrays,Indexing,Insert,我有一个js脚本,它可以完美地作为战舰使用,我想更改脚本,因为现在我必须手动添加中的战舰数量,即使位置是随机生成的。 现在,我必须这样添加船只 ships: [{locations: ["", "", ""], hits: ["", "", ""]}, {locations: ["", "", ""], hits: ["", "", ""]}, {locations: ["", "", ""], hits: ["", "", ""]}], 我修改了脚本,现在它是

我有一个js脚本,它可以完美地作为战舰使用,我想更改脚本,因为现在我必须手动添加中的战舰数量,即使位置是随机生成的。 现在,我必须这样添加船只

ships: [{locations: ["", "", ""], hits: ["", "", ""]},
        {locations: ["", "", ""], hits: ["", "", ""]},
        {locations: ["", "", ""], hits: ["", "", ""]}],
我修改了脚本,现在它是
ship:[]

当输入一个位置并命中该位置时,新脚本会以某种方式命中具有相同命中索引的所有对象

我将提供工作脚本,其中工作完美,我添加的脚本

工作脚本

对于工作脚本,当加载时,ships看起来是这样的

ships: [{locations: ["10", "11", "12"], hits: ["", "", ""]},
    {locations: ["22", "23", ""24], hits: ["", "", ""]},
    {locations: ["51", "52", "53"], hits: ["", "", ""]}],
如果输入的位置正确,比如说10,那么hits属性中的数组将输入一个“hit”字符串,如下所示

ships: [{locations: ["10", "11", "12"], hits: ["hit", "", ""]},
    {locations: ["22", "23", ""24], hits: ["", "", ""]},
    {locations: ["51", "52", "53"], hits: ["", "", ""]}],
对于修改后的脚本
ships
属性,仍然会生成类似的内容

ships: [{locations: ["10", "11", "12"], hits: ["", "", ""]},
    {locations: ["22", "23", ""24], hits: ["", "", ""]},
    {locations: ["51", "52", "53"], hits: ["", "", ""]}],
但假设输入了
11
,就会发生这种情况

ships: [{locations: ["10", "11", "12"], hits: ["", "hit", ""]},
    {locations: ["22", "23", ""24], hits: ["", "hit", ""]},
    {locations: ["51", "52", "53"], hits: ["", "hit", ""]}],
不知何故,它在所有相同的索引中实现了命中

有人能帮我一下我错过了什么导致了这个吗?

替换这个代码

locations = this.generateShipLocations();
为此:

locations.push(this.generateShipLocations());
您还需要初始化如下位置:

var locations = []
您正在覆盖而不是添加

替换此代码

locations = this.generateShipLocations();
为此:

locations.push(this.generateShipLocations());
您还需要初始化如下位置:

var locations = []

您正在覆盖而不是添加

这将使浏览器崩溃:(这将使浏览器崩溃:(