需求:多维数组=>一维数组
let arr= [1, [2, [3, [4, 5]]], 6];
let str = JSON.stringify(arr); //"[1,[2,[3,[4,5]]],6]"
let arr2 = arr2 = arr.toString().split(’,’) // [“1”, “2”, “3”, “4”, “5”, “6”]
方式一:
ary.flat(Infinity)
方式二,递归:
function flatter(arr){
return [].concat(…arr.map(x =>
Array.isArray(x)? flatter(x) : x
))
}
或者:
while (ary.some(Array.isArray)) {
ary = [].concat(…ary);
}
方式三,reduce:
(function flatten(arr) {
return arr.reduce((prev,next) => {
return prev.concat(Array.isArray(next) ? flatten(next) : next)
},[])
})(arr)
方式四,toString +split
while,for,forEach,filter,map,Array.from,some,every,reduce,reduceRight
4.1for
var arr2 = arr.toString().split(’,’)
var arr3=[]
undefined
for(var i=0; i<arr2.length; i++){
arr3[i] = +arr2[i]
}
4.2 forEach
arr2.forEach(x=> arr3.push(+x))
4.3forFilter
arr2.filter(x=>arr3.push(+x))
4.4map
arr.toString().split(’,’).map(x=> +x )
4.5Array.from
Array.from(arr2,x=>+x)
4.6while (some不支持,因为遍历到一个true就返回)
var index=0
var arr3=[]
while (index <arr2.length) {
arr3.push(+arr2[index])
index++
}
4.7every //返回true
arr2.every(x=>arr3.push(+x))
4.8reduce关键要设置初始值
arr2.reduce((total,item)=>arr3.push(+item),0)
方式五,正则替换
把str 里面的中括号删除
JSON.parse("["+str.replace(/[|]/g, ‘’)+"]")