如何在JavaScript字符串末尾正确添加空格?
原有写法的问题
str.split("").push("").join("")触发join报错:数组的push()方法返回值是操作完成后数组的长度,是数字类型,不是修改后的数组本身,对数字调用join()方法必然报类型错误。str[str.length] = ' '不生效:JavaScript中的字符串属于原始值类型,具备不可变性,不能像操作数组那样通过索引直接修改字符串的某一位内容,所有对字符串的修改操作本质都是返回一个全新的字符串,不会改动原始值。
可行实现方式
- 直接使用字符串拼接:写法最简单直观,性能也最好
let str = 'prefix'; // 两种写法等价 str = str + ' '; // str += ' '; console.log(str.length); // 输出7,值为'prefix '
- 使用
padEnd()尾部填充方法:专门用于在字符串尾部填充指定字符到目标长度,完全匹配当前场景
let str = 'prefix'; // 第一个参数为目标总长度,第二个参数为填充字符,默认值就是空格 str = str.padEnd(7); // 显式传入填充字符写法:str.padEnd(7, ' '),效果完全一致 console.log(str); // 输出'prefix '
- 修正数组转换思路的写法:只要调整调用顺序,避免在push的返回值上调用join即可
let str = 'prefix'; const strArr = str.split(''); strArr.push(' '); str = strArr.join(''); // 也可以用concat避开push返回值的问题:str = str.split('').concat([' ']).join('') console.log(str.length); // 输出7
- 使用模板字符串拼接:日常开发中常用的字符串拼接写法
let str = 'prefix'; str = `${str} `; console.log(str.length); // 输出7
内容的提问来源于stack exchange,提问作者Judoboy Alex
相关产品推荐
相关产品推荐

