javascript - 为什么代码停止检查是否是数组?

标签 javascript arrays multidimensional-array

我正在尝试编写扁平化数组,但是当代码到达嵌套数组时它为什么停止检查?它输出的是 [ 1, 2, 3, [ [ [Object] ] ] ]

请解释为什么它停止遍历嵌套数组以及为什么它不连接。谢谢

flatten = function(nestedArray, result) {
    result = [];

    each(nestedArray, function(item){

      if(Array.isArray(item)){
          result = result.concat(item);
      } else {
          result.push(item);
      }
    });
return result;
};

flatten([1, [2], [3, [[[4]]]]])

最佳答案

JavaScript 中没有像 each 这样的方法,你能做的就是使用 Array#forEach recursion function .

var flatten = function(nestedArray, result) {
  result = [];
  // iterate over array
  nestedArray.forEach(function(item) {
    if (Array.isArray(item)) {
      // do recursion to flatten the inner array and concatenate
      result = result.concat(flatten(item));
    } else {
      result.push(item);
    }
  });
  return result;
};

console.log(flatten([1, [2], [3, [[[4]]]]]));

关于javascript - 为什么代码停止检查是否是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37959576/

相关文章:

javascript - EventListener 和音频事件导致错误?

javascript - jQuery 验证在 Ajax 表单提交中不起作用

javascript - 使用 Javascript 设置多个 Cookie

c - 将内存动态分配给结构节点数组

c++ - 如何在 C++ 中以小写形式将文本从数组的一维传输到另一维?

javascript - 如何在 Javascript 中将文本文件中的段落作为单个字符串读取?

javascript - 如何在javascript中进行统一交叉?

javascript - 将json多维转换为数组javascript

php - 搜索数组: array_filter vs loop

c# - C#中的字符串数组