使用JS将指定下标的元素移动到某个位置,且获取到有变化的元素及下标的变化

let arr = [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
];
let oldArr=[
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
];
let indexesToMove = [2, 5, 6];
let insertIndex=7;
let elementsToMove = indexesToMove.map(index => arr.slice(index, index+1)[0]);
console.log("要移动的元素:"+ elementsToMove);
for (var i = indexesToMove.length - 1; i >= 0; i--) {
    arr.splice(indexesToMove[i], 1);
}
console.log("删除要移动的元素后的数组:"+ arr);
if(insertIndex>indexesToMove[0]){
    if(insertIndex>indexesToMove[indexesToMove.length-1]){
        arr.splice(insertIndex-indexesToMove.length, 0, ... elementsToMove);
    }else{
        arr.splice(insertIndex-1, 0, ... elementsToMove);
    }
    
}else{
    arr.splice(insertIndex, 0, ... elementsToMove);
}

console.log("原数组:"+oldArr.join(","));
console.log("移动后的数组:"+arr.join(","));


let beginIndex=indexesToMove[0];
if(beginIndex>insertIndex){
    beginIndex=insertIndex;
}
let endIndex=indexesToMove[indexesToMove.length-1];


let changeInfo = [];

for (var i = beginIndex; i <= endIndex; i++) { 
    if(arr[i]!=oldArr[i]){
        let oldIndex = i;
        let newIndex= arr.indexOf(oldArr[i]);
        changeInfo.push(`下标为${oldIndex}的元素${oldArr[i]}移动后的下标为${newIndex}`);
    }
    
}
console.log(changeInfo);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值