某跳动面试官:实现n层嵌套数组的翻转叭。

861 阅读1分钟

问题:已知数组 a=[1,[2,[3,[4,null]]]], 实现数组 b=[4,[3,[2,[1,null]]]] ,考虑n级嵌套的情况。

思路可以先将数组扁平化,再从后往前一次合并数组。考察到了数组的操作方法。

代码

function reverseArray(arr) {
            let a = arr.flat(Infinity);

            for (let i = 0; i < Math.floor((a.length - 1) / 2); i++) {
                [a[i], a[a.length - 2 - i]] = [a[a.length - 2 - i], a[i]]
            }

            for (let i = a.length - 2; i >= 1; i--) {
                if (i === a.length - 2) {
                    a[i] = [a[i], null];
                    continue;
                }
                a[i] = [a[i], a[i + 1]]
            }
            return a.slice(0, 2);
        }

        //测试
        let arr = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, null]]]]]]]]]]]

        console.log(reverseArray(arr));

image.png


记录记录!