let a=[1,2,3,4]
// 给0,3位置的变量交换位置
// 1.利用一个中间变量
// let t=a[0]
// a[0]=a[3]
// a[3]=t
// console.log(a)
// 2.splice方法
// a.splice(3,1,...a.splice(0,1,a[3]))
// console.log(a)
// 3.结构赋值
function swap(arr,old_index,new_index){
[arr[old_index],arr[new_index]]=[arr[new_index],arr[old_index]]
return arr
}
// 注意点1.这个结构赋值的最小操作空间必须是一个函数,也就是不能单独使用,直接使用灰显示a未定义,在这个测试环境中
// 2.这个函数的写法是不能直接返回,必须操作玩数组,在返回操作之后的数组
// a=swap(a,0,3)
// 以上我们有了交换数组内任意数据的方法,现在有以下场景
// 1.在拖拽组件中,我们通过拖拽把一个索引是0的元素拖到了索引是3,那么这个其实并不是简单的交换0,3的元素,而是0先和1交换,然后和2交换,然后和3交换。
// 其实这个最好理解的就是抽积木,把他从最下面拿出来,然后查到想要的位置,但是当他拿出来的一瞬间,原来的数组是变化的,我们给出的移动后的位置可能现在都不准确了
// 所以不得已要一个一个的交换。
function super_swap(arr,index,count,isUp){
// arr:需要操作的数组
// index:需要操作的数组的元素的索引
// 操作元素移动的次数
// 操作元素移动的方向
let re=arr
if(isUp==1){
// 向下移动,还需要判断下向下有没有溢出
for(let x=0;x<count;x++){
re=this.swapItem(re,index+x,index+x+1)
}
return re;
}else if(isUp==0){
// 向上移动,判断下向上有没有溢出
for(let x=0;x<count;x++){
re=this.swapItem(re,index-x,index-x-1)
}
return re;
}
}