js数组反转除了reverse方法,还可以则么写?

var reverseString = function(s) {
    let right = 0
    let left = s.length - 1
    while(right < left) {
        [s[right], s[left]] = [s[left], s[right]]
        right++
        left--
    }
};

如何理解这种方法?

阅读 5k
5 个回答

你这不是去重,而是反序吧。。。

var reverseString = function(s) {
    let right = 0
    let left = s.length - 1
    while(right < left) { // 从字符串两边往中间遍历
        [s[right], s[left]] = [s[left], s[right]] // 数组解构赋值
        right++ // 左边往右移动
        left--  // 右边往左移动
    }
}
  1. 这不是去重
  2. 这都没有返回值 return
  3. [s[right], s[left]] = [s[left], s[right]] 交换值 参考解构

reverse是数组倒序。。。倒序就是这个时间复杂度。没有什么更好的办法,最多就是再简洁一点。

原生for循环杠

var arr = [1,2,3,4,5,6]
        for(var i = 0;i < arr.length / 2; i++) {
            var temp = arr[i]
            arr[i] = arr[arr.length - 1 - i]
            arr[arr.length - 1 - i] = temp
        }
        console.log(arr)

这个方法就是头尾交换,然后left++,left指向头往尾走,right-- right指向头往头走,直到相遇或者right的值小于left。
![图片描述][1]

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