MST

星途 面试题库

面试题:JavaScript多维数组的扁平化及还原

给定一个任意维度的JavaScript数组(例如:[[1, [2, 3]], 4, [5, [6, [7]]]]),编写函数将其扁平化(即变为[1, 2, 3, 4, 5, 6, 7]),并编写另一个函数将扁平化后的数组还原为原始结构。
37.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
// 扁平化函数
function flattenArray(arr) {
    return [].concat(...arr.map(item => Array.isArray(item)? flattenArray(item) : item));
}

// 还原函数
function restoreArray(flatArr, originalStructure) {
    let index = 0;
    function restoreInner(original) {
        return original.map(item => {
            if (Array.isArray(item)) {
                return restoreInner(item);
            } else {
                return flatArr[index++];
            }
        });
    }
    return restoreInner(originalStructure);
}

使用示例:

const originalArray = [[1, [2, 3]], 4, [5, [6, [7]]]];
const flatArray = flattenArray(originalArray);
console.log(flatArray); // [1, 2, 3, 4, 5, 6, 7]
const restoredArray = restoreArray(flatArray, originalArray);
console.log(restoredArray); // [[1, [2, 3]], 4, [5, [6, [7]]]]