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);