(1)数组字符串化
<script>
let arr = [[222,333,444],[55,66,77]]
arr+='';
arr = arr.split(',');
console.log(arr)
</script>
(2)递归
<script>
function reduceDimension(arr){
let ret = [];
let newArr = function(arr){
arr.forEach(function(item){
item instanceof Array?newArr(item):ret.push(item)
});
}
newArr(arr)
return ret
}
const array = [12,45,78,25,[45,12,75,96,[12,32,65,63,2,[46,62]]]]
let res = reduceDimension(array)
console.log(res)
</script>
(3)Array.prototype.flat()
Infinity作为深度,展开任意深度的嵌套数组
<script>
const arr1 = [1,2,3,[4,5]]
console.log(arr1.flat()) // [1,2,3,4,5]
const arr2 = [1,2,3,[4,5,[6,7]]]
console.log(arr2.flat(2))// [1,2,3,4,5,6,7]
const arr3 = [1,2,[3,4,[5,6,[7,8],9,6]]]
console.log(arr3.flat(Infinity)) //[1,2,3,4,5,6,7,8,9,6]
</script>
(4)使用stack无限反嵌套多层嵌套数组
<script>
let arr1 = [1,2,[3,4,[5,6,[7,8],9,6]]]
function flatten(input) {
const stack = [...input];
const res =[];
while (stack.length) {
const next = stack.pop();
if (Array.isArray(next)) {
stack.push(...next)
}else{
res.push(next)
}
}
return res.reverse();
}
const r1 = flatten(arr1)
console.log(r1)
</script>