【问题标题】:Flattening nested array [duplicate]展平嵌套数组[重复]
【发布时间】:2017-07-20 05:54:41
【问题描述】:

我正在尝试展平嵌套数组,但我没有定义。我最近学习了reduce,并正在尝试应用相同的逻辑。

var list2 = [0, [1, [2, [3, [4, [5]]]]]];

function flat3(arr){
  arr.reduce(function(result, val, index){
    if(Array.isArray(val)){
      result = result.concat(val);
      flat3(val);
    } else {
      result.push(val);
    }
    return result;
  }, []);
}

console.log(flat3(list2));

我不确定。为什么?我错过了什么?

【问题讨论】:

  • 您收到 undefined 是因为您没有为 flat3 返回 arr.reduce
  • @A.Lau 我不想使用 ES6 的 => 而我想先在 ES5 中理解它。你能帮我解决这个问题吗?
  • 我不明白为什么我的帖子在提出问题时得到了 -1(甚至提出了我的基本尝试)
  • 不幸的是,有些人会不喜欢它,即使他们认为它不值得回答

标签: javascript arrays flatten


【解决方案1】:

您没有返回 flat3 的值。这就是你要找的:

var list2 = [0, [1, [2, [3, [4, [5]]]]]];

function flat3(arr) {
  return arr.reduce(function(result, val, index) {
    if (Array.isArray(val)) {
      result = result.concat(flat3(val));
    } else {
      result.push(val);
    }
    return result;
  }, []);
}

console.log(flat3(list2));

【讨论】:

  • 它给了我以下信息:[ 0, 1, 2, [ 3, [ 4, [Object] ] ] ]
  • 该代码给出[0,1,2,3,4,5]
  • 我想我正在使用在线编辑器,这给我带来了问题。感谢您的澄清!
猜你喜欢
  • 1970-01-01
  • 2014-05-28
  • 2012-10-31
  • 2017-03-06
  • 2017-12-26
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多