请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

`Array.prototype.concat.apply([], children)`真能拍平数组吗?

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)这种用法真的能把二维数组变成一维的吗?

  1. 首先, 它只要进入一次if, 就直接return了,不会考虑后面是否还有children是数组,
  2. 其次, 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]
所以只要出现嵌套,执行一次,就可以把所有的二维数组都拍平

1 回复 有任何疑惑可以回复我~
  • 提问者 flyingjoer #1
    非常感谢!犯傻了, 没注意到用的是apply
    回复 有任何疑惑可以回复我~ 2018-09-23 19:45:15
  • 提问者 flyingjoer #2
    非常感谢!犯傻了, 没注意到用的是apply
    回复 有任何疑惑可以回复我~ 2018-09-23 19:45:15
  • 提问者 flyingjoer #3
    非常感谢!犯傻了, 没注意到用的是apply
    回复 有任何疑惑可以回复我~ 2018-09-23 19:45:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信