最近工作中遇到需要将多条数据前后移动的操作
网上搜索几乎都是单条数据移动的,所以自己试着实现一下这个功能
完整代码
let a = ['0', '1', '2', '3', '4', '5', '6']
// arr = [Array] 用于操作的数组
// f_indexs = [Array || String || Number] 移动下标位置
// move = [Number || String] 移动几格
function arrayMove (arr, f_indexs, move) {
if (f_indexs.constructor !== Array) f_indexs = [Number(f_indexs)]
f_indexs.sort((a, b) => a - b)
let arr1 = [...arr]
let from_arr = f_indexs.map((index) => arr[index])
for (let i = f_indexs.length - 1; i >= 0; i--) {
arr1.splice(Number(f_indexs[i]), 1)
}
for (let i = 0; i < f_indexs.length; i++) {
let move_index = Number(f_indexs[i]) + Number(move)
if (move_index < 0) move_index = 0
if (move_index > (arr1.length - 1)) move_index = arr.length - 1
arr1.splice(move_index, -1, from_arr[i])
}
return arr1
}
// 将下标为 3、6 的数据,向后移动 2个 下标
// 返回 ['0', '1', '2', '4', '5', '3', '6']
arrayMove(a, [3, 6], 2)
// 将下标为 2、1 的数据,向前移动 1个 下标
// 返回 ['1', '2', '0', '3', '4', '5', '6']
arrayMove(a, [2, 1], -1)
结束
最后欢迎大家来指出问题,一起学习
觉得不错的也可以给俺一个 赞,爱你兄弟 ^▽^