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