【中级】实现 Array.prototype.flat 方法
实现一个 flat 方法,可以根据传入的层级展开对应深度的数组嵌套
Array.prototype.flat = function(depth = 1) {
// 实现代码
}
// 示例
var arr1 = [1, 2, [3, 4], [5, 6]];
arr1.flat();
// [1, 2, 3, 4, 5, 6]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
arr2.flat(2);
// [1, 2, 3, 4, 5, 6]
//使用 Infinity,可展开任意深度的嵌套数组
var arr3 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr3.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
参考答案:
Array.prototype.flat = function(depth = 1) {
let res = [];
this.forEach(item => {
if (!Array.isArray(item) || depth === 0) {
res.push(item)
} else {
res.push.apply(res, item.flat(depth === Infinity ? Infinity : depth - 1))
}
})
return res;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12