1、数组字符串化
let arr = [[123456],[333],789];
arr += '';
arr = arr.split(',');
console.log(arr);
2、递归
function demo(arr){
var newArr = []
for(var i = 0; i < arr.length; i++){
if(Array.isArray(arr[i])){
newArr.push.apply(newArr,demo(arr[i]))
}else{
newArr.push(arr[i])
}
}
return newArr
}
var array = ['1','2',['2',['6',['4','9'],'8'],'5'],'3','3','2']
var reduce = demo(array)
3、利用contact
var a = [1,[2],[3,4]]
var result = []
for(var i = 0; i<a.length; i++){
if(a[i].constructor == Array){
result = result.concat(a[i])
}else{
result.push(a[i])
}
}
console.log(resule)
4、利用扩展运算符
var a = [1,[2],[3,4]]
var result = []
result = [].concat(...a)
console.log(result)
5、利用apply
var a = [1,2,[3,4]]
var result = []
result = Array.prototype.concat.apply([],a)
console.log(result)
6、Array.prototype.flat()
var arr1 = [1,2,[3,4]]
console.log(arr1.flat())
var arr2 = [1,2,[3,4,[5,6]]]
console.log(arr2.flat())
var arr3 = [1,2,[3,4,[5,6]]]
console.log(arr3.flat(2))
console.log(arr3.flat(Infinity))
7、使用reduce、concat和递归无限反嵌套多层嵌套的数组
var arr1 = [1,2,3,[1,2,3,4[2,3,4]]]
function flatDeep(arr1){
return arr1.reduce(
(acc,val) => {
Array.isArray(val)? acc.concat(flatDeep(val)) : acc.concat(val), []
}
)
}
console.log(flatDeep(arr1))