javascript - 求助,这段代码什么意思
高洛峰
高洛峰 2017-04-11 11:47:28
[JavaScript讨论组]
const flatten = arr => arr.reduce(
  function (a, b){
    a.concat(Array.isArray(b) ? flatten(b) : b),[]
  }
);

定义了一个flatten函数,使用的是es6的箭头函数,传进去一个数组,对这个数据进行reduce方法,后边的那个,[]是什么意思没明白。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
黄舟

arr.reduce(callback, [initialValue])

reduce方法接受两个参数:

第一个参数是一个function,每次执行都回调用这个参数

第二个参数是初始值,就是那个[]。也就是说第一次调用function的时候,a[]

文档在这里

你的代码的问题:
刚执行了一次,发现少了点东西,应该是这样子:

const flatten = arr => arr.reduce(
  function (a, b){
    return a.concat(Array.isArray(b) ? flatten(b) : b)
  }, []
);
阿神

第二个参数可以省略,a就是arr[0];
不省略就是指定的值,如这里指定为[]。

伊谢尔伦

这代码是错的

reduce的参数1 (reducer) 必须返回一个值 (下一个a)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号