javascript交换数组元素位置

中间值

var arr = [1, 2, 4, 3, 5]
var temp = 0
temp = arr[2] // temp = 4
arr[2] = arr[3] // 此时数组为[1,2,3,3,5]
arr[3] = temp 
console.log(arr); // (5) [1, 2, 3, 4, 5]

这是最基础的方法,创建一个变量temp进行中转,将“4”先赋值给temp,然后用“3”覆盖“4”,然后再将temp的值赋给原来“3”

splice方法

splice方法的使用。可以看这篇:https://www.jianshu.com/p/2c5d0dfa9d1d

  • 使用es5的方法
    封装成一个函数
function swapArray(arrayObject, index1, index2){
      arrayObject[index1] = arrayObject.splice(index2, 1, arr[index1])[0]
}

测试:

var arr = [1, 2, 3, 4, 5]
function swapArray(arrayObject, index1, index2){
  arrayObject[index1] = arrayObject.splice(index2, 1, arr[index1])[0]
}
swapArray(arr, 2, 3)
console.log(arr); // (5) [1, 2, 4, 3, 5]
  • 使用es6展开运算符
function swapArray(arrayObject, index1, index2){
  arrayObject.splice(index2,1,...arrayObject.splice(index1, 1 , arrayObject[index2]));
}

两种方法的实现原理都一样,只是实现方法不同

解构赋值法

var arr = [1, 2, 3, 4, 5];
[arr[3], arr[2]] = [arr[2], arr[3]]
console.log(arr); // (5) [1, 2, 4, 3, 5]

特别声明:如果使用解构赋值的方法对数组元素进行交换,向上面的例子,上一行是数组的声明,下一行就要交换,那么数组声明结束必须加分号,不然报错

Snipaste_2021-04-27_12-55-01.png

你可能感兴趣的:(javascript交换数组元素位置)