1.利用[].concat.apply实现降维
var arr=[[1,2],[3,4]]; function Jw(obj){ console.log(Array.prototype.concat.apply([],obj)) return Array.prototype.concat.apply([],obj); } Jw(arr);
2.如果concat方法的参数是一个元素,该元素会直接插入新数组中;如果参数是一个数组,该数组的各个元素将被插入到新数组中
function reduceDimension(arr){ let ret = []; for(let i=0;i<arr.length;i++){ ret=ret.concat(arr[i]) } console.log(ret) return ret; } reduceDimension(arr)
3.递归
function reduceDimension(arr){ let ret = []; let toArr = function(arr){ arr.forEach(function(item){ item instanceof Array ? toArr(item) : ret.push(item); }); } toArr(arr); console.log(ret) return ret; } reduceDimension([1, 2, [3, 4, [5, 6]]])
4.flat
let list = [1, 2, 3, [4, [5]]]; let res = list.flat(Infinity) console.log(res) // [1, 2, 3, 4, 5]
5.reduce将二维数组转化为一维
let arr = [[0, 1], [2, 3], [4, 5]] let newArr = arr.reduce((pre,cur)=>{ return pre.concat(cur) },[]) console.log(newArr); // [0, 1, 2, 3, 4, 5]
6.reduce将多维数组转化为一维
let arr = [[0, 1], [2, 3], [4,[5,6,7]]] const newArr = function(arr){ return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[]) } console.log(newArr(arr)); //[0, 1, 2, 3, 4, 5, 6, 7]