1. flat
[
[1,2],
[3,4]
].flat();
// [1,2,3,4]
flat可以将任意维数组转成一维数组,只需要传入被扁平化的层数。
如三维数组则flat(2).如果是未知,则传入Infinity
2. concat + 扩展符
[].concat(
...[
[1, 2],
[3, 4],
]
); // [1,2,3,4]
3. reduce + concat
[
[1,2],
[3,4]
].reduce((acc, cur) => acc.concat(cur), []);
4. toString + split
转成字符串后再split转数组
tips: 有局限性,不适用于有特殊子元素类型的数组,如null,undefined,对象类型等。
[
[1,2],
[3,4]
].toString().split(',').map(item => +item);
5. 递归降维
forEach
const newArr = []
const flatArr = arr => {
arr.forEach(item => {
if (Array.isArray(item) {
flatArr(item)
} else {
newArr.push(item)
}
}
};
flat([[1, 2], [3, 4]]);
reduce
const flatArr = arr => {
arr.reduce((prev, cur, index, arr) => {
if (Array.isArray(item) {
return prev.concat(...flatArr(item))
}
return prev.concat(item)
}, [])
}