首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript数组中的魔术逗号

Javascript数组中的魔术逗号
EN

Stack Overflow用户
提问于 2018-08-10 04:47:54
回答 2查看 70关注 0票数 3

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

代码语言:javascript
复制
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;
}

如果有人想看我写的网页,我可以提供给你,但我不认为这有什么关系。

下面是输出的样子:

进入董事会:5 3 4 6 7 8 9 1 2 7 7 2 1 9 5 3 4 8 1 9 8 3 4 2 5 6 7 8 5 9 7 6 1 1 2 3 4 2 6 8 5 3 7 9 1 1 1 3 3 2 4 8 5 6 6 6 1 5 3 7 7 2 8 2 8 7 4 1 9 6 3 5 3 4 5 2 8 6 1 7 9

test5,3,4,6,7,8,9,1,2,6,7,2,1,9,5,3,4,8,1,9,8,3,4,2,5,6,7,8,5,9,7,6,1,4,2,3,4,2,6,8,5,3,7,9,1,7,1,3,9,2,4,8,5,6,9,6,1,5,3,7,2,8,4,2,8,7,4,1,9,6,3,5,3,4,5,2,8,6,1,7,9

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-10 04:55:41

当从board.split(" ") (数组)转换为字符串时,将插入逗号。请参阅文档here)和下面的示例:

代码语言:javascript
复制
var test = ['1', '2', '3'];

console.log(test[0], test[1]);

var testAsString = String(test);

console.log(testAsString[0], testAsString[1]);

您不需要将其从数组中转换回来,只需正常访问元素即可。

代码语言:javascript
复制
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 = 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();
代码语言:javascript
复制
<div id="demo"></div>
<div id="test"></div>
<div id="printBoard"></div>
<div id="error"></div>

票数 1
EN

Stack Overflow用户

发布于 2018-08-10 04:58:03

执行此操作时:

代码语言:javascript
复制
String(board.split(" "));

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

您需要记住,String(board.split(" "));正在将数组转换为字符串,这将导致在表示中包含一些逗号。

所以当你迭代的时候,你会遍历字符串的字符,然后用逗号复制它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51775533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档