javascript - 用字母做一个正方形
问题描述
我有这个:
ooooo
ooooo
ooooo
ooooo
ooooo
穿上o
除中间以外的所有东西,这样它就变成了这样:
ooooo
o o
o o
o o
ooooo
无论如何我可以在Javascript中做到这一点吗?我的代码目前是: HTML:
<input type = 'text' id = 'box' placeholder = 'Enter n' onkeyup = 'bigbox();'/>
<br><br>
<div id="output"></div>
脚本:
function bigbox() {
number = document.getElementById('box').value;
display = document.getElementById("output");
for(let j = 0; j<number; j++) {
for(let i = 0; i<number; i++)
text += "o";
text += "<br>";
}
display.innerHTML = text;
解决方案
如果其中一个索引为零或加一等于正方形的所需位置,则可以添加,然后使用边框字符或空格。
基本上这条线
text += i === 0 || i + 1 === size || j === 0 || j + 1 === size ? "o": " ";
包含三个部分:
一个加法赋值
+=
,它接受一个表达式并将其添加到左侧变量中。text += someExpression
一个条件(三元)运算符
?:
,它接受一个表达式并检查它是否为真(如除零或之外的任何数字、任何非空字符串、NaN
对象或数组、)true
或假(如零/ 、、、、、 )。NaN
''
null
undefined
false
如果为真,则取之后的值,
?
如果为假,则取之后的值:
。它是一种
if
带有表达式的语句的简短形式。expression ? alternative1 : alternative2 // code truthy -> alternative1 // result falsy -> alternative2
一个条件部分。条件与逻辑 OR
||
连接,这将返回第一个真值或最后一个假值。condition1 || condition2 || condition3 || ...
条件检查索引,如果为零或最大的有效值,那么你打了一个边界,否则你在正方形内。
function bigbox(size) {
var display = document.getElementById("output"),
text = "";
size = +size;
for (let j = 0; j < size; j++) {
for (let i = 0; i < size; i++) {
text += i === 0 || i + 1 === size || j === 0 || j + 1 === size ? "o": " ";
}
text += "<br>";
}
display.innerHTML = text;
}
<input type="text" id="box" onchange="bigbox(this.value)">
<pre id="output"></pre>
推荐阅读
- c++ - massif 可视化工具和 ms_print 之间的大小差异
- html - 如何更改我的 wordpress 网站上图像和文本的对齐方式?
- php - Wordpress 视频嵌入和缩略图生成器将视频中的缩略图添加到帖子
- python - 如何在 ml 引擎中构建用于对象检测预测的 uint8 numpy 数组输入张量
- android - 访问 Virdi AC 7000 指纹终端的日志文件
- android - 片段生命周期启用/禁用
- mysql - 结合来自不同数据库的 2 个 MySQL 查询
- android - 未知属性 android
- if-statement - 使用 K.switch() 进行 keras(张量流后端)条件分配
- python - python3 glob.glob 正则表达式只得到第一个匹配