JS NaN在对棋子数组进行排序时

问题描述

我正在尝试将国际象棋棋盘协调的x和y标准化为a1 ... b4 ... e2等。但是它总是使我在结尾处抛出NaN(https://prnt.sc/uhtk4x)。我现在很伤心:(已经尝试了很长时间,但是没有运气 而且它不断抛出一些随机值-https://prnt.sc/uhtjtc

var FinalStorage;
var BoardSize;
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];
        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];
}

function normalizeCoordinates()
{
    let Storage = SetupPieces(); // Getting the Pieces from the board (Storage[0] -> X Storage[1] -> Y Storage[2] -> Piece Name)

    var DivIndexX = parseInt(parseInt(Storage[0][Storage.length-1],10) / 8,10);
    var DivIndexY = parseInt(parseInt(Storage[1][Storage.length-1],10);

    let xAxis = ["a","b","c","d","e","f","g","h"];
    let yAxis = [8,7,6,5,4,3,2,1];

    var TempXStorage = []; // Arrays for the normalised values to be stored in
    var TempYStorage = [];

    let ReadyCoord = [];
    console.log("DivIndexX:" + DivIndexX + " DivIndexY:" + DivIndexY);
    for(var i=0;i<Storage[0].length;i++)
    {
        console.log("x:" + Storage[0][i] + " y:" + Storage[1][i]); // Test console logging,to see,if x and y values are present
        console.log("xSwitch:" + (parseInt(Storage[0][i],10) / parseInt(DivIndexX,10) + " ySwitch:" + (Storage[1][i] / DivIndexY)));
        switch(parseInt(Storage[0][i],10) / DivIndexX)
        {
            case 1:
                TempXStorage[i] = xAxis[0];
                break;
            case 2:
                TempXStorage[i] = xAxis[1];
                break;
            case 3:
                TempXStorage[i] = xAxis[2];
                break;
            case 4:
                TempXStorage[i] = xAxis[3];
                break;
            case 5:
                TempXStorage[i] = xAxis[4];
                break;
            case 6:
                TempXStorage[i] = xAxis[5];
                break;
            case 7:
                TempXStorage[i] = xAxis[6];
                break;
            case 8:
                TempXStorage[i] = xAxis[7];
                break;
        }

        switch(Storage[1][i] / DivIndexY)
        {
            case 1:
                TempYStorage[i] = yAxis[0];
                break;
            case 2:
                TempYStorage[i] = yAxis[1];
                break;
            case 3:
                TempYStorage[i] = yAxis[2];
                break;
            case 4:
                TempYStorage[i] = yAxis[3];
                break;
            case 5:
                TempYStorage[i] = yAxis[4];
                break;
            case 6:
                TempYStorage[i] = yAxis[5];
                break;
            case 7:
                TempYStorage[i] = yAxis[6];
                break;
            case 8:
                TempYStorage[i] = yAxis[7];
                break;
        }
        ReadyCoord[i] = TempXStorage[i] + TempYStorage[i];
    }
    return [ReadyCoord,Storage[2]];
}


var testing = normalizeCoordinates();

for(var i=0; i<testing[0].length;i++)
{
    console.log("Position:" + testing[0][i] + " PName:" + testing[1][i]);
}
//console.log("DivIndexX:" + DivIndexX + " DivIndexY:" + DivIndexY);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)