问题:已知数组 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));
记录记录!