Javascript 移动数组元素的几个自定义方法,包括元素位置交换、上移、下移、移动至首位、排序移动
位置交换
例如:arr = [1,2,3,4,5],将3与1交换swapItem(arr, 2, 0),结果是[3,2,1,4,5]
// fromIndex: 当前元素所在位置索引, toIndex: 移动到交换的位置索引
var swapItem = function(arr, fromIndex, toIndex) {
arr[toIndex] = arr.splice(fromIndex, 1, arr[toIndex])[0];
return arr;
};
上移
例如:arr = [1,2,3,4,5],将3上移moveUpItem(arr, 2),结果是[1,3,2,4,5]
// index: 当前元素索引
var moveUpItem = function(arr, index) {
if(index == 0) {
return;
}
swapItem(arr, index, index - 1);
};
下移
例如:arr = [1,2,3,4,5],将3下移moveDownItem(arr, 2),结果是[1,2,4,3,5]
var moveDownRecord = function(arr, index) {
if(index == arr.length - 1) {
return;
}
swapItem(arr, index, index + 1);
};
移动至首位
例如:arr = [1,2,3,4,5],将3移动至首位moveItemToFirst(arr, 2),结果是[3,1,2,4,5]
// fromIndex: 当前元素所在位置索引
var moveItemToFirst = function(arr, fromIndex) {
var item;
for (var k in arr) {
item = arr[k];
if (k == fromIndex) {
arr.splice(k, 1);
break;
}
}
arr.unshift(item);
}
排序移动
例如:arr = [1,2,3,4,5],将3移动到末尾moveItem(arr, 2, 4),结果是[1,2,4,5,3]
// fromIndex: 当前元素所在位置索引, toIndex: 移动到指定索引
var moveItem = function(arr, fromIndex, toIndex) {
for (var k in arr) {
var item = arr[k];
if (k == fromIndex) {
arr.splice(k, 1);
arr.splice(toIndex, 0, item);
break;
}
}
return arr;
}