Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组中的神奇逗号_Javascript_Arrays_Loops_Split - Fatal编程技术网

Javascript数组中的神奇逗号

Javascript数组中的神奇逗号,javascript,arrays,loops,split,Javascript,Arrays,Loops,Split,我正在写一个数独验证程序作为练习题。我在一行中导入一个81位的电路板,该行由一个空格作为字符串分隔。当我在第4行打印字符串时,输入中的数字之间没有逗号分隔。在第14行,我使用split方法将其拆分为一个长度应为81个索引的数组。当我在第20行打印数组进行测试时,数字之间的索引已经用逗号填充。我不知道这些神奇的逗号是从哪里来的,它一定是split方法的结果,因为我的输入不包含任何逗号。有人能解释发生了什么事吗?以下是JS脚本: function import1() { var board

我正在写一个数独验证程序作为练习题。我在一行中导入一个81位的电路板,该行由一个空格作为字符串分隔。当我在第4行打印字符串时,输入中的数字之间没有逗号分隔。在第14行,我使用split方法将其拆分为一个长度应为81个索引的数组。当我在第20行打印数组进行测试时,数字之间的索引已经用逗号填充。我不知道这些神奇的逗号是从哪里来的,它一定是split方法的结果,因为我的输入不包含任何逗号。有人能解释发生了什么事吗?以下是JS脚本:

function import1() {
    var board = prompt("Please enter a board");
    if (board != null) {
        document.getElementById("demo").innerHTML = "board entered: " + board + "\n";
    }
    else {
        document.getElementById("demo").innerHTML = "Invalid entry\n";
    }

    parseMe(board);
}

function parseMe(board) {

    var boardArray = String(board.split(" "));

    var toPrint = "";
    for (var j = 0; j < boardArray.length; j++) {
        toPrint += boardArray[j];
    }
    document.getElementById("test").innerHTML = "test" + toPrint;


    var board2D = [
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"],
        ["0", "0", "0", "0", "0", "0", "0", "0", "0"]
    ];

    var counter = 0;
    for (var i = 0; i < board2D.length; i++) {
        for (var j = 0; j < board2D.length; j++) {
            board2D[i][j] = boardArray[counter];
            counter++;
        }
    }
    if (counter != 81) {

     document.getElementById("error").innerHTML = "Invalid entry, should be 81 total digits\n";
    }
    printBoard(board2D);
}

function printBoard(board) {
    var toPrint = "";

    for (var i = 0; i < board.length; i++) {
        for (var j = 0; j < board.length; j++) {
         toPrint += board[i][j] + " ";
        }
        toPrint += "\n";
    }
    document.getElementById("printBoard").innerHTML = toPrint;
}
函数import1(){
var板=提示(“请输入板”);
如果(线路板!=null){
document.getElementById(“demo”).innerHTML=“板输入:”+board+“\n”;
}
否则{
document.getElementById(“demo”).innerHTML=“无效项\n”;
}
我(董事会);
}
函数解析ME(板){
var boardArray=字符串(board.split(“”);
var toPrint=“”;
对于(var j=0;j
如果有人想看我写的网页,我可以提供给他们,但我认为这无关紧要

以下是输出结果:

报名人数:5344678912126721954348198857967614243434349676142437979790179017901392928858585856901790139824869015772828282828282871199


5,3,3,3,3,3,3,3,3,3,3,3,3,4,8,8,8,1,1,9,9,8,9,8,3,3,3,3,3,3,3,3,5,5,3,3,3,3,3,3,3,3,3,3,3,4,4,8,8,1,8,8,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5字符串,将插入逗号。请参阅文档),以及下面的示例:

var测试=['1','2','3'];
console.log(测试[0],测试[1]);
var testAsString=字符串(测试);
log(testassString[0],testassString[1])执行此操作时:

String(board.split(" "));

for (var j = 0; j < boardArray.length; j++) {
    toPrint += boardArray[j];
}
document.getElementById("test").innerHTML = "test" + toPrint;
字符串(board.split(“”);
对于(var j=0;j
您需要记住
字符串(board.split(“”)
正在将数组转换为字符串,这将导致在表示中包含一些逗号

因此,当您迭代时,您迭代字符串的字符,然后用逗号复制它


您不需要将其转换为字符串

boardArray
不是一个数组;它是一个字符串(因为您将它包装在
string()
中)。这导致它使用
Array.prototype.toString
,默认情况下使用逗号。@HereticMonkey谢谢!是的,如果您希望
boardArray
实际上是一个数组,则不希望将其包装在
String()
--
让boardArray=board.split(“”)
IMO,在
parseMe
的开头进行检查,看看是否是81。例如:
if(boardArray.length!=81){/*写入错误*/return;}