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

js数组递归遍历

js数组递归遍历

慕标5832272 2019-04-19 16:11:41
给定一个随机数组,数组可能包含数组(也就是说数组元素可能为数组)。要求用js实现一个函数,返回该数组中所有元素。例如,例如:数组[2,3,[4,6,[1,8]],12,10],返回结果为:[2,3,4,6,1,8,12,10]错误代码:functiongetArray(arr){vararrs=[];for(i=0;i
查看完整描述

2 回答

?
慕桂英546537

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

.concat是返回合并数组,不是直接在原数组上修改的,你这么改一下应该就OK了:
arrs=arrs.concat(temp);
另外,你的for循环用的i没有用var定义,所以是全局变量,在递归调用的时候i的值会随着递归改变,所以会有数据无法进入到循环被push的情况。
另外,最好判断Array.isArray(arr[i])而不是判断它是否是数字。
根据以上意见你的代码改成如下是正常的:
functiongetArray(arr){
vararrs=[];
for(vari=0,l=arr.length;iif(!Array.isArray(arr[i]))arrs.push(arr[i]);
elsearrs=arrs.concat(getArray(arr[i]));
}
returnarrs;
}
                            
查看完整回答
反对 回复 2019-04-19
?
当年话下

TA贡献1890条经验 获得超9个赞

第一个程序大部是正确的,除了concat那里。concat不改变原数据,只是返回一个新的结果数组,作个实验:
javascriptvara=[1,2,3]
varb=a.concat([4,5])
console.log(a,b)
//[1,2,3][1,2,3,4,5]
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

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