首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌套的for循环中垂直打印数组。JAVASCRIPT

在嵌套的for循环中垂直打印数组。JAVASCRIPT
EN

Stack Overflow用户
提问于 2015-11-11 13:22:00
回答 3查看 1.3K关注 0票数 0

我希望有人能帮我找出一种使用嵌套for循环垂直打印数组的方法。例如,我有

来展示它应该是什么样子。不是那个数组的所有东西都应该是零,网格的尺寸是10x10,与我附加的图像不同。

我想知道如何在一个网格(零的网格)中打印多个数组,但知道如何垂直打印一个数组就足够了!我使用的是javascript。

我确信我走错了方向。

EN

回答 3

Stack Overflow用户

发布于 2015-11-11 14:12:04

试试这个:

代码语言:javascript
复制
function printGrid(){
	var ships = [[1], [1,2], [1,2,3], [1,2,3,4], [1,2,3,4,5], [1,2,3,4,5,6], [1,2,3,4,5,6,7], [1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8,9]];
	var htmlResult = "";
	var size = 10;
	normalizeArrayForRows(size, ships);
  
	for(var r = 0; r < size; r++){
		
        normalizeArrayForCols(size, ships[r]);
		for(var c = 0; c < size; c++){
			htmlResult += ships[r][c] + " ";
		}
		
		htmlResult += "<br />"
	}
	document.getElementById("grid").innerHTML += htmlResult;
}

function normalizeArrayForRows(size, thearray){
	if (thearray.length < size){
		for(var i = thearray.length; i < size; i++){
			thearray[i] =  [];
		}
	}
}

function normalizeArrayForCols(size, thearray){
	if (thearray.length < size){
		for(var i = thearray.length; i < size; i++){
			thearray[i] = 0;
		}
	}
}


printGrid();
代码语言:javascript
复制
<div id="grid">
  
 </div>

票数 0
EN

Stack Overflow用户

发布于 2015-11-11 14:45:06

代码语言:javascript
复制
function start(){
	
	var ships = [[5,5,5,5,5],[4,4,4,4],[3,3,3],[2,2],[3,3,3]];
	var foo = Math.floor(Math.random() * 10 + 1);
		for(var x=0; x<10; x++){
			var lngth = ships.length;
			
			if(lngth<10){
				var p = 10 - lngth;
				var rm = new Array(p);
				for(var i = 0; i<p; i++){
					rm[i] = 0
				}
				ships.push(rm);
			}
			for(var y=0; y<10; y++){
				var lngth1 = ships[x].length;
				alert(lngth1);
				if(lngth1<10){
					var p = 10 - lngth1;
					for(var i = 0; i<p; i++){
						ships[x].push(0);
					}
				}
				document.getElementById("grid").innerHTML += ships[x][y];
			}
			document.getElementById("grid").innerHTML += "</br>";
		}
	}

start();
代码语言:javascript
复制
<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<script type="text/javascript">
	</script>
	
	<title></title>
</head>
<body>
	<div id="wrapper">
		<h1 id="grid"></h1>
	</div>
</body>
</html>

票数 0
EN

Stack Overflow用户

发布于 2015-11-11 13:57:20

你不一定走错了方向。2嵌套的for循环很好地实现了您想要做的事情。

实际上,您已经编写的代码中的一小部分更改将以零矩阵的形式输出一列垂直的值:

+= (" " + (x===2 ? "ARRAY".substr(y,1) : "0"))替换+= " 0"

原始代码的基本思想是遍历每一列,然后遍历该列的每一行。但是,您随后会在列的每一行中输出一个零。如果您想要更改任何特定单元格中的行为,只需添加一条If语句来检查您所在的行或列是否正确,然后相应地更改您打印的值。

在下面的代码片段中,我更改了y和x的顺序;然后在每一行中,当在第2列中时,我告诉它输出单词数组"ARRAY".substr(y,1)的第y个字母。这实现了您在图片中发布的内容:

代码语言:javascript
复制
    var ships = [[5,5,5,5,5],[4,4,4,4],[3,3,3],[2,2],[3,3,3]];
	var foo = Math.floor(Math.random() * 10 + 1);
	for(var y=0; y<10; y++){
	    document.getElementById("grid").innerHTML += "<br />";
		for(var x=0; x<10; x++){
			document.getElementById("grid").innerHTML += (" " + (x===2 ? ("ARRAY".substr(y,1) || "0") : "0"));
		}
	}
代码语言:javascript
复制
<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<script type="text/javascript">
	</script>
	
	<title></title>
</head>
<body>
	<div id="wrapper">
		<h1 id="grid"></h1>
	</div>
</body>
</html>

如果要在单元格中打印其他内容,只需更改If语句,以根据X和Y值决定要打印的内容。

编辑:将数组更改为("ARRAY".substr(y,1) || "0");,这样当“"ARRAY".substr(y,1)”完成打印时,它将只为该列的其余部分打印"0“;以匹配您的图片。

说明:(x===2 ? ("ARRAY".substr(y,1) || "0") : "0")是“如果x等于2:输出"ARRAY”中的第y个字符,否则输出"0“的缩写;否则,如果x不等于2:输出"0”。

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

https://stackoverflow.com/questions/33644718

复制
相关文章

相似问题

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