JS仅返回32个元素数组中的3个元素

问题描述

我正在尝试使所有棋盘上的棋子都存在。数组似乎已成功填充32个(对于起始位置有效)。但是,在交换机比较中,它仅找到3个。我正在使用img src参数来区分各个部分。 JS代码

function SetupPieces()
{
    var piecesObj = document.getElementsByClassName("chess_com_piece chess_com_draggable");
    let imgSrc = [];
    for(var i=0;i<piecesObj.length;i++)
    {
        imgSrc[i] = piecesObj[i].src.substring(60);
    }
    var Pieces = [],FirstPosition = [],SecondPosition = [],brookX,brookY,WRookX,WRookY,brook,WRook;
    for(var i=0;i<imgSrc.length;i++)
    {
        var TempPieceLocObj = (piecesObj[i].style.transform).substring(10);
        TempPieceLocObj = (TempPieceLocObj.substring(0,TempPieceLocObj.length - 1)).split(",");

        FirstPosition[i] = (TempPieceLocObj[0].split("px"))[0];
        SecondPosition[i] = (TempPieceLocObj[1].split("px"))[0];
        console.log("Array size - " + imgSrc.length);
        switch(imgSrc[i])
        {
            case "wp.png":
                Pieces[i] = "White Pawn";
                break;
            case "bp.png":
                Pieces[i] = "Black Pawn";
                break;
            case "br.png":
                Pieces[i] = "Black Rook";
                brook = (piecesObj[i].style.transform).substring(10);
                brook = (brook.substring(0,brook.length - 1)).split(",");
                brookY = parseInt(brook[1].substring(0,brook[1].length - 3),10) * 1.029684601113173;
                brookX = parseInt(brook[0].substring(0,brook[1].length - 1),10) * 1.029684601113173;
                break;
            case "wr.png":
                Pieces[i] = "White Rook";
                WRook = (piecesObj[i].style.transform).substring(10);
                WRook = (WRook.substring(0,WRook.length - 1)).split(",");
                WRookY = parseInt(WRook[1].substring(0,WRook[1].length - 1),10) * 1.029684601113173;
                WRookX = parseInt(WRook[0].substring(0,WRook[1].length - 3),10) * 1.029684601113173;
                break;
            case "bn.png":
                Pieces[i] = "Black Knight";
                break;
            case "wn.png":
                Pieces[i] = "White Knight";
                break;
            case "bb.png":
                Pieces[i] = "Black Bishop";
                break;
            case "wb.png":
                Pieces[i] = "White Bishop";
                break;
            case "wq.png":
                Pieces[i] = "White Queen";
                break;
            case "bq.png":
                Pieces[i] = "Black Queen";
                break;
            case "bk.png":
                Pieces[i] = "Black King";
                break;
            case "wk.png":
                Pieces[i] = "White King";
                break;
        }
    }
    if(WRookX !== 0) {BoardSize = WRookX;}
    return [FirstPosition,SecondPosition,Pieces];
}

控制台输出-https://prnt.sc/uhrg79

imgSrc数组中的片断-https://prnt.sc/uhrgxz

我使用以下简单代码输出它们:

var testing = SetupPieces();

for(var i = 0; i<testing.length;i++)
{
    console.log("X:" + testing[0][i] + " Y:" + testing[1][i] + " Name:" + testing[2][i]);
}

解决方法

testing等于函数([FirstPosition,SecondPosition,Pieces])的返回,因此 testing.length将为3。 您可能是说testing[2].length,是pieces