面试题答案
一键面试// 扁平化函数
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]]]]