cocos creator

JavaScript 数组的交换 左移 右移 置顶 置底函数封装

2019-04-11  本文已影响2人  人气小哥
/**
* 数组元素交换位置
* @param {array} arr 数组
* @param {number} index1 添加项目的位置
* @param {number} index2 删除项目的位置
* index1和index2分别是两个数组的索引值,即是两个要交换元素位置的索引值,如1,5就是数组中下标为1和5的两个元素交换位置
*/
function swapArray(arr, index1, index2) {
    arr[index1] = arr.splice(index2, 1, arr[index1])[0];
    return arr;
}
window.g_swapArray = swapArray

//右移 将当前数组index索引与后面一个元素互换位置,向数组后面移动一位
function zIndexRight(arr, index) {
    if (index < 0) {
        cc.log("索引值 为负值 不处理交换")
    } else if (index + 1 >= arr.length) {
        cc.log("索引值+1 大于数组长度 导致数组越界 不处理交换")
    } else {
        swapArray(arr, index, index + 1);
    }
}
window.g_zIndexRight = zIndexRight


//左移 将当前数组index索引与前面一个元素互换位置,向数组前面移动一位
function zIndexLeft(arr, index) {
    if (index == 0) {
        cc.log("索引值 已经为0 左边没有值了 不处理交换")
    } else if (index >= arr.length) {
        cc.log("索引值大于数组长度 导致数组越界 不处理交换")
    } else {
        swapArray(arr, index, index - 1);
    }
}
window.g_zIndexLeft = zIndexLeft


//置底,即将当前元素移到数组的最后一位
function zIndexBottom(arr, index) {
    let length = arr.length
    if (index < 0 || index >= length){
        cc.log("索引值不在数组中 越界 不处理置底交换操作")
        return
    }

    if (index + 1 != length) {

        //首先判断当前元素需要上移几个位置,置底移动到数组的第一位
        var moveNum = length - 1 - index;

        //循环出需要一个一个上移的次数
        for (var i = 0; i < moveNum; i++) {

            swapArray(arr, index, index + 1);

            index++;

        }
    } else {
        cc.log('已经处于置底');
    }
}
window.g_zIndexBottom = zIndexBottom


//置顶,即将当前元素移到数组的第一位
function zIndexTop(arr, index) {
    let length = arr.length
    if (index < 0 || index >= length){
        cc.log("索引值不在数组中 越界 不处理置顶交换操作")
        return
    }

    if (index != 0) {

        //首先判断当前元素需要上移几个位置,置顶移动到数组的第一位
        var moveNum = index - 0;

        //循环出需要一个一个上移的次数
        for (var i = 0; i < moveNum; i++) {

            swapArray(arr, index, index - 1);

            index--;

        }
    } else {
        cc.log('已经处于置顶');
    }
}
window.g_zIndexTop = zIndexTop

上一篇 下一篇

猜你喜欢

热点阅读