如何移除变量初始值,仅保留字符串修改后的目标结果?
解决方法:移除字符串中的逗号和空格,提取纯字母
原代码问题分析
你原来的代码之所以会输出初始字符串+目标结果的混合内容,核心问题是在map循环里直接修改了原变量alphabet——初始的alphabet本身包含空格和逗号,每次循环又把trim后的字符追加到原变量上,最终自然把初始值和处理后的内容拼接在了一起。
几种可行的实现方式
方法1:正则替换(最简洁)
直接用正则匹配所有非大写字母的字符,全局替换为空:
let alphabet = ' A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z '; const pureAlphabet = alphabet.replace(/[^A-Z]/g, ''); console.log(pureAlphabet); // 输出 ABCDEFGHIJKLMNOPQRSTUVWXYZ
/[^A-Z]/g的含义:[^A-Z]匹配任何不是大写A到Z的字符,g表示全局替换,把所有匹配到的字符都换成空字符串。
方法2:用reduce重构原思路
如果想保留split的思路,不要修改原变量,改用reduce做累加(map是用来转换数组元素的,不适合做累加操作):
let alphabet = ' A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z '; const pureAlphabet = alphabet.split(',').reduce((total, item) => { return total + item.trim(); }, ''); // 初始累加值设为空字符串,避免带上原变量的初始内容 console.log(pureAlphabet);
方法3:split+join组合
先去掉首尾空格,再按逗号+空格分割,最后拼接成字符串:
let alphabet = ' A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z '; const pureAlphabet = alphabet.trim().split(/,\s*/).join(''); console.log(pureAlphabet);
trim()去掉首尾的空格,/,\s*/匹配逗号后面跟任意数量的空格作为分隔符,最后join('')把数组元素直接拼接成无分隔符的字符串。
内容的提问来源于stack exchange,提问作者willd
相关产品推荐
相关产品推荐

