在JavaScript中递归地从多级数组中创建一个级别数组

时间:2015-12-16 11:40:36

标签: javascript arrays recursion

我有点困惑,请帮助我。 这就是我所拥有的

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。我可以很容易地用相似的方法找到所有元素的总和,只是稍加修改,但不能这样做:(

1 个答案:

答案 0 :(得分:0)

几乎一切都很好:) 刚

  

concat()方法返回一个新数组,该数组由调用它的数组组成,并与作为参数提供的数组和/或值连接。

所以,而不是

allNumbers.concat(getAllNumbers(el))

应该是

allNumbers = allNumbers.concat(getAllNumbers(el))

它有效:)