数组的flat(Infinity)扁平化
一道面试题引发的思考
面试题
1 | // 输入数据 |
学霸答案
1 | const ary = [ |
ES6 之数组的 flat(Infinity)扁平化,可以实现多维数组转成一维数组
1 | var arr1 = [1, 2, [3, 4]]; |
flat() 方法会移除数组中的空项:
1 | var arr4 = [1, 2, , 4, 5]; |
数组平面化
- 循环 + 递归 (5 行)
1 | const flatten = input => { |
归并方法:reduce
(1 行 不过太难于理解了)
reduce 的第二个参数:作为归并基础的初始值
1
2
3
4
5const flatten = input =>
input.reduce(
(prev, next) => prev.concat(Array.isArray(next) ? flatten(next) : next),
[]
);ES6:
...
扩展运算符5 行代码
1 | const flatten = input => { |
toString 法
一行代码
只适用于数组元素全部为数字的情况下
1 | const flatten = ary => |