js 移动数组元素的几个方法

位置交换

/**
 * @param {any[]} arr - 原始数组。
 * @param {number} fromIndex - 当前元素所在位置索引。
 * @param {number} toIndex - 移动到交换的位置索引。
 * @returns {any[]} 返回修改后的数组。
 */
const swapItem = function(arr, fromIndex, toIndex) {
    arr[toIndex] = arr.splice(fromIndex, 1, arr[toIndex])[0];
    return arr;
};

上移

// arr: ['a', 'b', 'c', 'd'], 将b上移,moveUpItem(arr, 1), 结果:['b', 'a', 'c', 'd']
const moveUpItem = function(arr, index) {
    if(index === 0) {
        return;
    }
    swapItem(arr, index, index - 1);
};

下移

// arr: ['a', 'b', 'c', 'd'], 将b下移,moveDownItem(arr, 1), 结果:['a', 'c', 'b', 'd']
const moveDownItem = function(arr, index) {
    if(index === arr.length - 1) {
        return;
    }
    swapItem(arr, index, index + 1);
};

移动至首位

// arr: ['a', 'b', 'c', 'd'], 将c移至首位,moveItemToFirst(arr, 2), 结果:['c', 'a', 'b', 'd']
const moveItemToFirst = function(arr, fromIndex) {
    let item;
    for (let i = 0; i < arr.length; i++) {
        item = arr[i];
        if (i === fromIndex) {
            arr.splice(i, 1);
            break;
        }
    }
    arr.unshift(item);
}

排序移动

// arr: ['a', 'b', 'c', 'd'], 将b移至末位,moveItem(arr, 1, 3), 结果:['a', 'c', 'd', 'b']
const moveItem = function(arr, fromIndex, toIndex) {
    for (let i = 0; i < arr.length; i++) {
        let item = arr[i];
        if (i == fromIndex) {
            arr.splice(i, 1);
            arr.splice(toIndex, 0, item);
            break;
        }
    }
    return arr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值