数组推送方法的行为异常javascript

数组推送方法的行为异常javascript,javascript,arrays,Javascript,Arrays,我有一个函数,它以数组作为参数 [["52", ["41", "43", "61", "63"]], ["54", ["43", "45", "63", "65"]]] “52”是我的硬币,[“41”、“43”、“61”、“63”]是硬币“52”的可能移动位置。这同样适用于“54”和[“43”、“

我有一个函数,它以数组作为参数

[["52", ["41", "43", "61", "63"]], ["54", ["43", "45", "63", "65"]]]
“52”是我的硬币,
[“41”、“43”、“61”、“63”]
是硬币“52”的可能移动位置。这同样适用于“54”和
[“43”、“45”、“63”、“65”]

在我的例子中,cell.innerHTML=''用于位置“41”、“43”、“45”

函数的行为正常,直到
freeLocations.push(freeLocations)其输出的位置

[“52”、“41”]、[“52”、“43”]、[“54”、“43”]和[“54”、“45”]。

但是,AllFreePositions.push(freeLocations)仅输出3个数组:[“52”、“41”]、[“52”、“43”]和[“54”、“45”]。[“54”,“43”]不见了

奇怪的是,如果我编辑
freeLocations.push(freeLocations,j)
只是为了调试,缺少的数组会显示在
allfreepositions.push(freeLocations)

我有什么遗漏吗

功能检查自由位置(硬币){
让allFreePostions=[];
设dangerPosition=[];
for(设i=0;icheckFreeLocations([[52]、[41]、[43]、[61]、[63”]、[54]、[43]、[45]、[63]、[65”]])
我不知道这是否有帮助,但这就是我如何更改硬币内所有数据的方法

let coins=[
["52", 
["41", "43", "61", "63"]],
["54", 
["43", "45", "63", "65"]]
];
控制台.日志(硬币);
功能检查自由位置(硬币){
让allFreePostions=[];
for(设i=0;i控制台日志(检查自由位置(硬币))看起来您的HTML中有非唯一id,这给您带来了麻烦

我相信[“54”,“43”]不显示的原因是因为您查看某个元素是否为空:

let cell=document.getElementById(位置[j]);
如果(cell.innerHTML==“”){
自由位置=位置[j];
免费位置。推(硬币);
自由定位。推(自由定位);
所有自由位置。推送(自由位置);

}
我给你写了一个片段。请添加相关的HTML,使HTML是一个简单的设置。它没有任何意义。所有的编码都是在javascript中完成的。我正在编写一个棋盘游戏。我有一张8x8的桌子,里面装满了12枚黑色硬币和12枚红色硬币。在硬币移动之前,它会检查四个对角线位置中是否有任意一个是空闲的,并选择空闲位置并将其放入阵列中。对于eg硬币52,检查位置41、43、61和63。由于位置61和63不是空的,我可能的移动是52到41和52到43。像wise一样,硬币54的位置43和45是空的,所以54可以移动到43或45。所以我必须有54对43和54对45。但我没有得到54对43。有趣的是,[“54”,“43”]在自由位置被正确推。推(自由位置)。但在下一行中,它丢失了。在下一行中,我只将其推到其他阵列。[“54”,“43”]未推送到所有自由位置。所有ID都是唯一的。双43的原因是硬币52和54都可以移动到位置43。