es5实现数组降维 JavaScript

 
var arr=[1,2,[2,3,4],4,[4,5,[6,7]]];

function
flattenNth(arr,n) {
if(n!=1){ arr.reduce(function(a, v,index,arr){
if(Array.isArray(v)){
return a.concat(flattenNth(v,n-1)) }else{
return a.concat(v); } // return a; },[]); }else { arr.reduce(function(a, v,index,arr){
return a.concat(v); // return a; },[]); } return arr;
}

console.log(flattenNth(arr,3));//[ 1, 2, [ 2, 3, 4 ], 4, [ 4, 5, [ 6, 7 ] ] ]

没有达到降维的效果,是哪一步出问题了呢(因为es6的箭头函数用的少,想把箭头函数改成es5版的降维)



#JavaScript#
全部评论
reduce 方法不修改原数组的,你需要返回reduce的返回值
点赞 回复 分享
发布于 2019-08-26 06:39
toString了解一下
点赞 回复 分享
发布于 2019-08-26 01:35
用es6 ...运算符做个while循环也是3句左右
点赞 回复 分享
发布于 2019-08-26 01:18
需要这么麻烦?用数组APi. flat实现属于扁平化,return arr.flat(infinity)
点赞 回复 分享
发布于 2019-08-26 00:05

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务