JavaScript字符串操作

在 JavaScript 里面,字符串是无法进行字符交换的吗?

const reverse = (s, start, end) => {
    while (start < end) {
        let temp = s[start];
        s[start++] = s[end];
        s[end--] = temp;
    }
    return s;
}
console.log(reverse("abc", 0, 3));

输出仍然是 abc 。
如果无法交换,那么为什么会这样?

阅读 2.4k
4 个回答
  1. start, end 参数不传默认是 undefined start < end 恒为 false
  2. javascript string 是只读的 str[1] = str[2] 这样的操作是无效的
(s, start=0, end=s.length-1) => {
    s = s.split("")
    ....
    return s.join('')
}

你没有传入start和end,没走while循环,直接被return了

写个能反转的:

let str = 'abc'
let res = str.split('').reverse().join('')
console.log(res) //cba

其实题主你用:

var str = 'abc'
str[0] = 'v'
console.log(str)

试试就知道字符串是不能直接更改某一个字符的,只能读取,所以得转数组。

函数体第一个while (start < end)的条件都不满足,自然直接走到了最后的return s,原模原样的返回了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题