js中数组reduce的两道题,求解答

1.三个数组
[1,2,3],[4,5],[6,7]
展开为
145,147,156,157,246.....

2.数组对象
[{name:'a',children:[{name:'a-1'}]},{name:'b',children:[{name:'b-1'}]}]
展开为
[{name:'a'},{name:'a-1'},{name:'b'},{name:'b-1'}]

阅读 1.5k
1 个回答

第一个在GitHub上,貌似是一样的功能(跟reduce没啥关系,不过逻辑是一样的):https://github.com/Jiasm/note...

第二个看起来是这样的操作,如果非要用reduce的话:

[{ name: 'a', children:[{ name: 'a-1' }] }, { name:'b', children: [{ name: 'b-1' }] }].reduce((results, current) => 
  results.concat({ name: current.name }, ...current.children)
, [])

@dave_wind 评论区排版不太好,我在这里回复你:

push会修改原数组,返回值是当前的长度,concat返回参数合并后的数组。
push加逗号这个叫做逗号操作符,可以理解为是把多行代码合并为一行去写,以最后一个逗号后边的表达式作为整个表达式的结果:

const a = (1, 2, 3, 4, 5) // a === 5

所以你代码的意思就是,将元素放到数组中,然后将数组返回,可以简单的将那一行表达式理解为这样的代码:

results.push(XXX)
return results
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题