如何修改字符串最后一个字符?赋值无效及slice报错求助
问题分析与解决
为什么原代码不生效?
JavaScript 中的字符串是不可变类型,你无法直接通过下标修改字符串的单个字符。虽然a[a.length - 1] = "0"这种写法不会抛出错误,但它不会对原字符串产生任何修改,所以输出仍是初始值"abcd2"。
正确的修改方法
有两种常用方案可以实现需求:
方案1:截取拼接
利用字符串截取方法获取前n-1位,再拼接新的最后一位:
let a = "abcd2"; a = a.slice(0, -1) + "0"; console.log(a); // 输出 "abcd0"
slice(0, -1)表示从字符串起始位置截取到倒数第一个字符之前的部分,得到"abcd",再拼接"0"就得到目标结果。你也可以用substring(0, a.length - 1)替代slice(0, -1),效果一致。
方案2:转数组修改后转回字符串
将字符串转为数组(数组是可变类型),修改数组最后一项后再转回字符串:
let a = "abcd2"; const arr = a.split(''); arr[arr.length - 1] = "0"; a = arr.join(''); console.log(a); // 输出 "abcd0"
关于slice(-1)赋值报错的原因
slice(-1)的作用是获取字符串的最后一个字符,它返回的是一个字符串值,而赋值操作的左侧必须是可被赋值的变量/引用,不能是一个值,因此会抛出错误:Uncaught ReferenceError: Invalid left-hand side in assignment(中文:未捕获的引用错误:赋值操作左侧无效)。
内容的提问来源于stack exchange,提问作者Giuli
相关产品推荐
相关产品推荐

