数组对象遍历:按数值生成对应星号拼接数值的问题排查
解决JavaScript数组对象生成对应数量星号的问题
问题描述
遍历包含对象的数组,根据每个对象中item的数值生成对应数量的星号,再拼接该数值(例如数值2对应**2),输出指定格式结果。
期望输出:
**2 ******6 ****4 ***3
当前代码及错误输出:
let arr = [ {'item': 2}, {'item': 6}, {'item': 4}, {'item': 3}, ] for(let i = 0; i < arr.length; i++) { let obj = arr[i] for(let key in obj) { let x = '*' + obj[key] console.log(x) } }
错误输出:
*2 *6 *4 *3
解决方法
核心问题是你只生成了1个星号,而非对应数值数量的星号。可以使用字符串的repeat()方法,根据item的数值重复星号后再拼接数值即可。
修正后的基础版本代码
let arr = [ {'item': 2}, {'item': 6}, {'item': 4}, {'item': 3}, ] for(let i = 0; i < arr.length; i++) { let obj = arr[i] for(let key in obj) { // 用repeat生成对应数量的星号,再拼接数值 let x = '*'.repeat(obj[key]) + obj[key] console.log(x) } }
更简洁的遍历写法
如果不需要兼容过旧的JavaScript环境,可以用数组forEach方法简化代码:
let arr = [ {'item': 2}, {'item': 6}, {'item': 4}, {'item': 3}, ] arr.forEach(obj => { const count = obj.item; console.log('*'.repeat(count) + count); });
内容的提问来源于stack exchange,提问作者pete
相关产品推荐
相关产品推荐

