JS扁平化分类:
- 对象扁平化:深度很深的对象,经过扁平化编程深度为 1 的对象.
- 数组扁平化:降维过程,
多维数组
经过扁平化变成一维数组
)。
数组扁平化flatten实现
1.利用递归函数
function flatten(arr) {
let finalArr = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
finalArr = finalArr.concat(flatten(arr[i]));
} else {
finalArr.push(arr[i]);
}
}
return finalArr
}
console.log('1.利用递归函数', flatten(testArr));
2. 利用reduce
function flatten2(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
}, [])
}
console.log('2. 利用reduce', flatten2(testArr));
3. 利用正则
const res3 = JSON.parse('[' + JSON.stringify(testArr).replace(/\[|\]/g, '') + ']');
console.log('3. 利用正则', res3);
4. flat 有兼容性问题, 不建议使用.
console.log([1, 2, [3]].flat(1));;
console.log([1, 2, [3, [4]]].flat(2));
console.log([1, 2, [3, [4, [5]]]].flat(Infinity));