Javascript数组多条数据前后移动

93 阅读1分钟

最近工作中遇到需要将多条数据前后移动的操作

网上搜索几乎都是单条数据移动的,所以自己试着实现一下这个功能

完整代码

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)

结束

最后欢迎大家来指出问题,一起学习

觉得不错的也可以给俺一个 ,爱你兄弟 ^▽^