Javascript 2D数组始终包含false(使用PUSH)

Javascript 2D数组始终包含false(使用PUSH),javascript,arrays,Javascript,Arrays,我目前正在用Javascript执行一些任务。 我在开始时创建了一个2D数组,完全为空: let stonearray =[[]]; 现在,每当用户单击某个位置时,我都会保存这些值,并希望将它们推送到数组中,以便将这些值保存在那里: var posx2 = Math.floor(x/colSize)*colSize+colSize/2; var posy2 = Math.floor(y/rowSize)*rowSize+rowSize/2; var pusharr = [[posx2, p

我目前正在用Javascript执行一些任务。 我在开始时创建了一个2D数组,完全为空:

  let stonearray =[[]];
现在,每当用户单击某个位置时,我都会保存这些值,并希望将它们推送到数组中,以便将这些值保存在那里:

var posx2 = Math.floor(x/colSize)*colSize+colSize/2;
var posy2 = Math.floor(y/rowSize)*rowSize+rowSize/2;
var pusharr = [[posx2, posy2]];
stonearray.push([pusharr]);
现在我想知道数组对(pusharray的值)是否已经存储在stonearray中——现在应该是这样。但每当我试图检查“石阵”是否已经包含“普沙尔”时,它总是说false。 我尝试了这些版本来检查:

//first attempt:
var contains = stonearray.includes([pusharr]);

//second attempt:
 function checkContain(stonearray,pusharr) {

    let a;

    alert(pusharr);

    for (a = 0; a < stonearray.length; a++) {
        if (stonearray[a] === pusharr) {
            return true;
        }
    }

    return false;
}
//第一次尝试:
var contains=stonearray.includes([pusharr]);
//第二次尝试:
功能检查包含(stonearray、pusharr){
让我们一起来;
警报(pusharr);
对于(a=0;a

它总是返回错误。但是为什么呢?我对Javascript非常陌生。请不要对我太苛刻:(

=
.includes
不会进行深入的平等性检查。不过,您可以这样做:

const stonearr=[[1,2],[55,22];
功能检查2DARR(pushArr,arr){
返回arr.some(a=>{
返回pushArr[0]==a[0]&&pushArr[1]==a[1];
})
}
log(check2dArr([1,2],stonearr));

console.log(check2dArr([55,21],stonearr));
==
。includes
不执行深度相等性检查。不过,您可以执行以下操作:

const stonearr=[[1,2],[55,22];
功能检查2DARR(pushArr,arr){
返回arr.some(a=>{
返回pushArr[0]==a[0]&&pushArr[1]==a[1];
})
}
log(check2dArr([1,2],stonearr));

console.log(check2dArr([55,21],stonearr));
首先,您正在推送一个数组:
stonearray.push([pusharr])
,可能需要按如下方式推送:
stonearray.push(pusharr);

设x=1,y=2,colSize=1,rowSize=2;
设stonearray=[];
var posx2=数学楼层(x/colSize)*colSize+colSize/2;
var posy2=数学楼层(y/行大小)*行大小+行大小/2;
var pusharr=[
[posx2,posy2]
];
石阵推(pusharr);
功能检查包含(stonearray、pusharr){
让我们一起来;
对于(a=0;aconsole.log(checkContain(stonearray,pusharr));
首先,您正在推送数组:
stonearray.push([pusharr])
,可能需要按如下方式推送:
stonearray.push(pusharr);

设x=1,y=2,colSize=1,rowSize=2;
设stonearray=[];
var posx2=数学楼层(x/colSize)*colSize+colSize/2;
var posy2=数学楼层(y/行大小)*行大小+行大小/2;
var pusharr=[
[posx2,posy2]
];
石阵推(pusharr);
功能检查包含(stonearray、pusharr){
让我们一起来;
对于(a=0;a控制台日志(检查包含(stonearray、pusharr))
非常感谢,这非常好。我不知道这些检查不会进行深度平等检查,您永远不会停止学习。我非常感谢您!如果您确实想快速进行深度平等检查,您可以签出Lodash并使用isEqual函数:非常感谢,这非常好。我不知道这些错误cks不进行深度平等性检查,您永远不会停止学习。我非常感谢您!如果您确实想要快速进行深度平等性检查,您可以检查Lodash并使用isEqual函数: