求助:如何修正JavaScript代码以实现按数组元素生成对应计数序列的需求?
修正JavaScript代码以实现预期数组转换
先帮你理清楚问题所在,再给出针对性的修正方案:
原代码的核心问题
- 函数语法错误:
getNewArray() { ... }不是合法的函数声明方式,浏览器会直接抛出语法错误。 - 逻辑完全偏差:你原本是想生成「从1到当前数字的数组」,但原代码是把原数组元素重复自身次数后push到新数组,比如元素3会被连续push3次,这和需求完全不符。
this使用不当:你的array和newArray都是全局变量,不需要用this访问,直接用变量名即可。
修正后的基础循环版代码
var array = [1, 3, 2]; var newArray = []; // 修正函数声明方式 function getNewArray() { // 遍历原数组的每一个元素 for (let i = 0; i < array.length; i++) { const currentNum = array[i]; // 生成从1到currentNum的数组 const countArray = []; // 注意x从1开始,到currentNum结束(使用<=) for (let x = 1; x <= currentNum; x++) { countArray.push(x); } // 将包含count属性的对象加入新数组 newArray.push({ count: countArray }); } console.log(newArray); } // 调用函数执行逻辑 getNewArray();
更简洁的ES6+数组方法版(推荐)
如果习惯用现代JS语法,map方法能让代码更简洁清晰:
const array = [1, 3, 2]; function getNewArray() { const newArray = array.map(num => { // 用Array.from快速生成1到num的连续数组 const count = Array.from({ length: num }, (_, index) => index + 1); return { count }; }); console.log(newArray); } getNewArray();
最终运行结果
执行后控制台会输出你预期的结构:
[ { count: [1] }, { count: [1, 2, 3] }, { count: [1, 2] } ]
内容的提问来源于stack exchange,提问作者Devora
相关产品推荐
相关产品推荐

