我有点困惑,请帮助我。 这就是我所拥有的
var arr = [
1,
2,
[11, 12, 13],
3,
[11, 12,
[21, 22]
]
];
正如您所看到的,它是一个多杠杆阵列。使用递归我需要从它创建一个级别的数组,其中包含其子级的所有元素。应该是这样的:
[1,2,11,12,13,3,11,12,21,22]
以下是我的表现:
function getAllNumbers(arr) {
var allNumbers = [];
arr.forEach(function (el) {
if (Array.isArray(el)) {
allNumbers.concat(getAllNumbers(el))
} else {
allNumbers.push(el)
}
});
return allNumbers;
}
它没有用。只给我一级,如下:[1,2,3]
我对递归特别感兴趣,所以请不要试图寻找其他方式。
请帮助
P.S。我可以很容易地用相似的方法找到所有元素的总和,只是稍加修改,但不能这样做:(
答案 0 :(得分:0)
几乎一切都很好:) 刚
concat()方法返回一个新数组,该数组由调用它的数组组成,并与作为参数提供的数组和/或值连接。
所以,而不是
allNumbers.concat(getAllNumbers(el))
应该是
allNumbers = allNumbers.concat(getAllNumbers(el))
它有效:)