Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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_Html_Css - Fatal编程技术网

Javascript 如何用一个字符和一个随机数画一个正方形?

Javascript 如何用一个字符和一个随机数画一个正方形?,javascript,html,css,Javascript,Html,Css,我想根据用户输入的大小制作一个方形的字母盒。例如,如果用户输入数字5和字符'o',则绘制如下形状: ooooo o o o o o o ooooo 或者,如果用户输入数字3和字符'h',则用'h'字符画一个正方形,如下所示: hhh h h hhh 我是javascript新手,所以我根本不知道怎么做。记住,我必须在屏幕上打印它,而不是在控制台上。log。我想通过阅读你的代码和理解你的逻辑来学习我的作业。因此,我可以为将来的赋值提供更好的逻辑。您可以尝试做的是执行嵌套for循环

我想根据用户输入的大小制作一个方形的字母盒。例如,如果用户输入数字
5
和字符
'o'
,则绘制如下形状:

ooooo
o   o
o   o
o   o
ooooo 
或者,如果用户输入数字
3
和字符
'h'
,则用
'h'
字符画一个正方形,如下所示:

hhh
h h
hhh

我是javascript新手,所以我根本不知道怎么做。记住,我必须在屏幕上打印它,而不是在
控制台上。log
。我想通过阅读你的代码和理解你的逻辑来学习我的作业。因此,我可以为将来的赋值提供更好的逻辑。

您可以尝试做的是执行嵌套for循环,然后为每一行创建一个带有字符串的数组

设n=5;
让输出=[];
for(设i=0;iconsole.log(输出)
这里有一个可能的解决方案。您需要的是在任何不是第一行或最后一行的行上,在开始和结束时仅“绘制”一个
o
。为了确保所有其他线条上的间距正确,我们仍然绘制
o
,但不透明度为0

function generateBox(){
const number=document.querySelector(“#boxSize”).value;
设html=[];
对于(i=0;i”);
}
document.querySelector(“#box”).innerHTML=html.join(“”);
}
document.querySelector(“#generateBox”).addEventListener('click',generateBox')

生成框



简单使用Array.map和fill属性即可实现此目的

使用单一条件检查
(rowIndex==0 | | rowIndex==size-1 | | colIndex==0 | | colIndex==size-1)

函数MakeBox(字符,大小){
数组(大小).fill(字符).forEach((行,行索引)=>{
常量数据=数组(大小).fill(字符).map((列,colIndex)=>{
如果(rowIndex==0 | | rowIndex==size-1 | | colIndex==0 | | colIndex==size-1){
返回字符;
} 
返回“”
})
console.log(`${data.join(“”)}\n`);
});
}
MakeBox(“o”,5);

MakeBox(“x”,10)您使用的测量单位是什么?当你说
n=5
时,它是。。。什么你试过什么?据我所知,这个单位是
o
:-)请访问,看看是什么和。做一些研究,搜索相关话题等;如果你被卡住了,张贴一份你的尝试,记下输入和预期输出。另外,屏幕的读取输出是一个单独的问题。如果你可以控制台记录它,你可以用CSS填充一个div,设置为pre-tooIs,这是你能做的最有效和最少的代码量?@JustinGrave你认为可以改进什么?这可能是一个很好的练习。我认为你的代码很好,因为我不是学生,所以我不是最好的,但她说你可以用她教的东西来制作程序。还有一种方法,比如html.push和查询选择器,我还没有学会。我在等待一个
fill
版本