为了账号安全,请及时绑定邮箱和手机立即绑定

使用javascript 扁平化数组---5种方法

使用javascript 扁平化数组---5种方法

尚方宝剑之说 2019-05-12 15:36:16
使用递归:map、reducefunctionflatten(arr){varres=[];arr.map(item=>{res=Array.isArray(item)?res.concat(flatten(item)):res.push(item);});returnres;}functionflatten(arr){returnarr.reduce((result,item)=>{returnresult.concat(Array.isArray(item)?flatten(item):item);},[]);}循环,一层一层剥开functionflatten(arr){while(arr.some(item=>Array.isArray(item))){arr=[].concat(...arr);}returnarr;}黑科技:join、toStringfunctionflatten(arr){returnarr.join(',').split(',').map(function(item){returnparseInt(item);})}functionflatten(arr){returnarr.toString().split(',').map(function(item){returnNumber(item);})}上边这两个代码块表示自己也看不懂,大佬能帮忙解释一下吗?
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

1
join用来讲数组元素按照某个字符来进行拼接成一个字符串。数组的所有元素都会被转换为string类型。也就相当于对所有的item进行调用toString最后在进行split,将字符串按照某字符进行分割,得到数组。
2
2可以认为是1实现方案中的一部分
toString,就是将整个数组转换为字符串进行输出,所有的item都会被转换为字符串,可以简单的理解为一个递归的过程。最后进行split
P.S.只是大概的思路,不保证ECMAScript文档中定义的流程就是这样的
                            
查看完整回答
反对 回复 2019-05-12
?
不负相思意

TA贡献1777条经验 获得超10个赞

官方解释:join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔,默认使用','
letarr=[1,2,3,[34,12],[12,[34,[56,78]]]];
arr.join()
//"1,2,3,34,12,12,34,56,78"
arr.join(',')
//"1,2,3,34,12,12,34,56,78"
arr.toString()
//"1,2,3,34,12,12,34,56,78"
//split之后
arr.join(',').split(',')
//["1","2","3","34","12","12","34","56","78"]
对这种不明白的东西就先断点看结果,然后看解释。很多时候解释的并不透彻以及每个人的理解都不一样,重点是知道结果会如何以及如何得到这种结果
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 641 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信