javascript - 展平 JavaScript 数组——为什么这不起作用?

标签 javascript

我正在尝试展平一个内部随机嵌套数组的数组。我不确定为什么我编写的函数会陷入无限循环:

let array = [1, 2, [3]]
var final_array = [] 

function flattener(array){
  for(i = 0; i < array.length; i++){
    if(array[i] instanceof Array){
      flattener(array[i])
    }else{
      final_array.push(array[i])
    }
  }
}

flattener(array)

我认为应该发生的是:

当我在 for 循环中检查 [3] 时,它进入 if 语句,再次调用 flattener,它解析,然后我退出if 语句。

相反,if 语句不断调用以检查 [3],我不确定为什么会这样。

最佳答案

问题是您没有声明 i 变量,所以它会泄漏到全局空间并在递归时被重置。

改变:

for(i = 0; i < array.length; i++){

收件人:

for(var i = 0; i < array.length; i++){

关于javascript - 展平 JavaScript 数组——为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743722/

相关文章:

javascript - 如何使用 ms-seo 包在 Meteor 中获得更好的 SEO?

javascript - canvas js 日期在 x 轴上重复

javascript - JSON 文件仅显示最后一个条目,尽管 id 不同

javascript - Trello API : list all cards for a given date range considering last activity date of the card in Trello?

javascript - 如何垂直居中引导模式?

javascript - 根据属性中的数据更改指令模板

javascript - 使用 .off() 删除事件处理程序的 jQuery 问题

javascript - 使用 jquery 从表中删除动态添加的行

javascript - 如何获取 JSON 数据的正确计数而不是字符长度

javascript - 合并两个具有共同元素的 JSON 对象