// 扁平化簡單的二維數組 const arr = [11, [22, 33], [44, 55], 66]; const flatArr = arr.join().split(','); // ["11", "22", "33", "44", "55", "66"]
主要使用的join方法:
//如果數組中的元素是數組,會將里面的數組也調用join() let num = [[1,2],3]; let str1 = num.join('-'); // 1,2-3
方法2:
// 扁平化簡單的二維數組 const arr = [11, [22, 33], [44, 55], 66]; const flatArr = arr.toString().split(','); // ["11", "22", "33", "44", "55", "66"]
知識點:
[1,[2,'c']].toString(); //1,2,c
// 以上與不使用任何參數調用join()方法返回的字符串是一樣的。
方法3:
flat()
默認只會“拉平”一層,如果想要“拉平”多層的嵌套數組,可以將flat()
方法的參數寫成一個整數,表示想要拉平的層數,默認為1。
[1, 2, [3, [4, 5]]].flat() // [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2) // [1, 2, 3, 4, 5]
如果不管有多少層嵌套,都要轉成一維數組,可以用Infinity
關鍵字作為參數。
[1, [2, [3]]].flat(Infinity) // [1, 2, 3]
方法四:
function flatten(arr){ var res = []; for(var i=0;i<arr.length;i++){ if(Array.isArray(arr[i])){ res = res.concat(flatten(arr[i])); }else{ res.push(arr[i]); } } return res; }