数组扁平化
需求:多维数组 ——> 一维数组
javascript
let arr = [1, [2, [3, [4, 5]]], 6]; // -> [1, 2, 3, 4, 5, 6]
let str = JSON.stringify(arr);
1. ES6 中的 flat 方法
javascript
arr = arr.flat(Infinity);
2. replace + split
javascript
arr = str.replace(/(\[|\])/g, '').split(',');
3. replace + JSON.parse
javascript
str = str.replace(/(\[|\])/g, '');
str = '[' + str + ']';
arr = JSON.parse(str);
4.普通递归
let result = [];
let fn = function (arr) {
for (let i = 0; i < arr.length; i++) {
let item = arr[i];
if (Array.isArray(item)) {
fn(item)
} else {
result.push(item)
}
}
}
5.reduce 函数迭代
javascript
function flatten(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
}, []);
}
6.扩展运算符
javascript
while (arr.some(Array.isArray)) {
arr = [].concat(...arr);
}