JavaScript使用Array.join实现hashtag_it函数给数组元素加#失效问题
问题修复说明
你当前的代码存在3个直接导致结果不符合预期的问题:
- 函数内部硬编码赋值覆盖了入参:函数体第一行写死
my_array = ['programming','code'],会直接替换掉调用时传入的数组参数,完全没有使用外部传入的值。 Array.join的用法逻辑错误:join(参数)的作用是将数组元素用传入的参数作为间隔符拼接为字符串,传入#作为参数时,只会在两个数组元素中间插入#,输出结果为programming#code,无法实现给每个元素前加#前缀的效果。- 函数没有设置返回值:当前仅在函数内部执行了打印操作,没有返回处理后的字符串,外层的
console.log(hashtag_it())会额外输出undefined。
正确实现代码
先给数组的每个元素拼接#前缀,再用逗号作为分隔符拼接为目标字符串,同时将结果return出去,调用时传入需要处理的数组即可:
function hashtag_it(my_array) { // 遍历数组为每个元素添加#前缀 const prefixedArr = my_array.map(item => `#${item}`) // 用逗号拼接为最终字符串并返回 return prefixedArr.join(',') } // 调用时传入目标数组作为参数 console.log(hashtag_it(['programming', 'code'])) // 输出结果:#programming,#code
如果想要更简洁的写法,不需要遍历数组也能实现同等效果:
function hashtag_it(my_array) { return '#' + my_array.join(',#') }
该写法的逻辑是:先用,#作为间隔符拼接数组得到programming,#code,再在字符串头部补一个#,刚好匹配要求的输出格式。
内容的提问来源于stack exchange,提问作者Kimseram
相关产品推荐
相关产品推荐

