скажем, у меня есть массив чисел => [1,2,3,4,5,6]
и я хочу их переплести => [1,4,2,5,3,6]
Я могу сделать это с помощью следующего кода
const nums = [1,2,3,4,5,6];
const results = [];
nums.slice(0, nums.length / 2).forEach((num, index) => results.push(num, nums.slice(nums.length / 2, nums.length)[index]))
console.info(results);чтобы стать лучшим программистом в целом, я хотел бы знать, как изменить массив на месте, как если бы это был связанный список, и без необходимости создавать дополнительную сложность пространства за счет наличия дополнительного массива.
Я написал логику, но не могу найти шаблон для создания функции.
// [0] do nothing
// [1]
currentIndex = 1;
temp = nums[3];
nums[3] = nums[currentIndex];
nums[currentIndex] = temp;
// 1[2]3[4]56 => 1[4]3[2]56
// [2]
currentIndex = 2;
temp = nums[3];
nums[3] = nums[currentIndex];
nums[currentIndex] = temp;
// 14[3][2]56 => 14[2][3]56
// [3]
currentIndex = 3;
temp = nums[4];
nums[4] = nums[currentIndex];
nums[currentIndex] = temp;
// 142[3][5]6 => 142[5][3]6
// while (currentIndex < nums.length / 2) {...}
я слишком много думаю об этом?
не могли бы вы использовать что-то вроде nums[nums.length - currentIndex]? Может быть, это не дает вам правильных результатов



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Функция splice работает с существующим массивом, поэтому вы можете использовать ее систематически. Я добавил комментарии, чтобы было понятно, что происходит на каждом этапе цикла.
Конечно, это будет работать только с массивами с четным числом элементов. Я оставлю это вам, чтобы сделать его более общим.
var start = [1, 2, 3, 4, 5, 6];
var half = start.length / 2;
var x = 1;
for (let i = half; i < start.length; i++) {
let a = start[i];
// remove the existing element
start.splice(i, 1);
// insert it at the right place
start.splice(x, 0, a);
// increment the index of where to insert the next element by two
x += 2;
}
console.info(start);