技术问题:无法将星号金字塔输出存入数组并展示
解决星号金字塔内容存入数组的问题
你的代码问题出在这几个核心点:
arr.push()没有传递任何内容,数组始终是空的- 直接用
document.write逐个输出字符,没有把每一行内容拼接成完整字符串,自然没法存入数组 - 函数最后没有返回数组,所以外部的
pyramid变量是undefined
下面是修改后的代码,既能把每一行内容存入数组,也能正常在页面渲染金字塔:
const pyramidOfAsterisks = function(val) { const arr = []; for (let m = 1; m <= val; m++) { if (m === 7) break; // 构建当前行的完整字符串 let line = ''; // 添加前置空格(用三个空格占位,页面显示时转成 ) for (let s = 1; s <= val - m; s++) { line += ' '; } // 拼接前半部分星号 for (let n = 1; n <= m; n++) { line += '* '; } // 拼接后半部分星号 for (let p = 2; p <= m; p++) { line += '* '; } // 将当前行存入数组 arr.push(line); // 页面渲染当前行(把空格转成 保证排版) document.write(line.replace(/ /g, ' ') + '<br />'); } // 返回存储所有行的数组 return arr; } // 获取存储金字塔行的数组 const pyramid = pyramidOfAsterisks(12); // 控制台查看数组内容 console.log('金字塔数组内容:', pyramid); // 页面输出数组的结构化内容 document.write('<br>数组内容:' + JSON.stringify(pyramid));
关键修改说明:
- 新增
line变量,把每一行的空格、星号先拼接成完整字符串,再推入数组 - 给
arr.push()传入构建好的line,确保数组能存储每一行内容 - 函数末尾添加
return arr,让外部可以获取到数组 - 页面渲染时把空格替换为
,保证金字塔的排版对齐;控制台直接打印数组就能看到所有行的原始字符串
内容的提问来源于stack exchange,提问作者dheerajSan
相关产品推荐
相关产品推荐

