`Array.prototype.concat.apply([], children)`真能拍平数组吗?
来源:2-7 createElement

flyingjoer
2018-09-23
function simpleNormalizeChildren (children: any) {
for (let i = 0; i < children.length; i++) {
if (Array.isArray(children[i])) {
return Array.prototype.concat.apply([], children)
}
}
return children
}
Array.prototype.concat.apply([], children)
这种用法真的能把二维数组变成一维的吗?
- 首先, 它只要进入一次
if
, 就直接return
了,不会考虑后面是否还有children
是数组, - 其次,
concat
里面传入的是children
, 不是children[i]
,感觉这就类似于下面这样:
var a = [1, [2, 3]]
[].concat(a)
写回答
1回答
-
var a = [1, [2, 3],[4,5,6]]
Array.prototype.concat.apply([], a)
返回 [1, 2, 3, 4, 5, 6]
所以只要出现嵌套,执行一次,就可以把所有的二维数组都拍平152019-01-31
相似问题