在拖拽等操作中,我们经常会操作数组,包括交换两个数组的位置。核心思想是利用splice的删除、新增、替换来实现,splice会改变原数组,所以最好在操作之前进行一下拷贝。splice会返回一个新的数组,删除的时候会返回删除的那个值。
例子: let arr = [1,2,3,4,5,6,7]
let arr1 = arr.slice() // 拷贝一份新数据 [1,2,3,4,5,6,7]
-
删除操作
// 删除第二个数据
arr1.splice(1,1) // [2]
arr1 // [1,3,4,5,6,7] -
新增操作
// 在第二个的位置新增一个9
arr1.splice(2,0,9) // []
arr1 // [1,2,9,3,4,5,6,7] -
替换操作
// 第一个数替换为0
arr1.splice(0,0,0) // [1]
arr1 // [0,2,3,4,5,6,7] -
数组交换位置
let data = [{id:1},{id:2},{id:3},{id:4}]
第二项和第三项换位置,第二个到第三个的位置
1、删掉第二个,获得第二个的值
let beforeVal = data.splice(1,1)[0] // {id:2}
// 此时data的结果为 [{id:1},{id:3},{id:4}]
2、在第二的位置插入{id:2}
data.splice(2,0,beforeVal)
// [{id:1},{id:3},{id:2},{id:4}]