给你一个数组 arr,数组中有 2n 个元素,按 [x1, x2, …, xn, y1, y2, …, yn] 的格式排列。
    请你将数组按 [x1, y1, x2, y2, …, xn, yn] 格式重新排列,返回重排后的数组。

    1. const arr1 = [2, 5, 1, 3, 4, 7]; // [2, 3, 5, 4, 1, 7]
    2. const arr2 = [1, 2, 3, 4, 4, 3, 2, 1]; // [1, 4, 2, 3, 3, 2, 4, 1]

    把数组由中间一分为二得出 a1, a2 两个数组,然后 a1 出一个元素,a2 出一个元素,依次完成。

    1. let shuffle = (arr) => {
    2. let arrFirst = arr.slice(0, arr.length / 2),
    3. arrSecond = arr.slice(arr.length / 2);
    4. for (let i = 0; i < arrFirst.length; i++) {
    5. res.push(arrFirst[i], arrSecond[i]);
    6. }
    7. return res;
    8. }
    9. console.log(shuffle(arr1));
    10. console.log(shuffle(arr2));

    简化写法,使用 map和利用数组下标索引的奇偶

    1. const arr1 = [2, 5, 1, 3, 4, 7]; // [2, 3, 5, 4, 1, 7]
    2. const arr2 = [1, 2, 3, 4, 4, 3, 2, 1]; // [1, 4, 2, 3, 3, 2, 4, 1]
    3. let shuffle = (arr) =>
    4. arr.map((item, index, arr) =>
    5. index % 2 ? arr[arr.length / 2 + Math.floor(index / 2)] : arr[index / 2]
    6. );
    7. console.log(shuffle(arr1));
    8. console.log(shuffle(arr2));