【问题标题】:Flattening arrays in CoffeeScriptCoffeeScript 中的扁平化数组
【发布时间】:2017-08-25 03:31:05
【问题描述】:

如何在 CoffeeScript 中展平嵌套的多维数组? 我想从

A = [1, [1,2] , [1,[1,[1,2],3],2] , 3]

B = [1, 1, 2, 1, 1, 1, 2, 3, 2, 3]

有没有一种没有循环的有效方法?

我现在拥有的是:

flatten = (array) ->
  flat = []
  for element in array
    if Array.isArray(element)
      flat = flat.concat flatten element
    else
      flat.push element
  flat

【问题讨论】:

  • 请定义“高效”

标签: arrays coffeescript flatten


【解决方案1】:

您可以使用reduce 方法进行递归解决,如下所示。

flat = (r, a) ->
  if (Array.isArray(a))
      return a.reduce(flat, r)

  r.push(a)
  return r

array = [1, [1,2] , [1,[1,[1,2,[10, 11, [23, 34, [100]]]],3],2] , 3]
console.log array.reduce(flat, []) # [ 1, 1, 2, 1, 1, 1, 2, 10, 11, 23, 34, 100, 3, 2, 3 ]

我不确定它是否有效,它只是解决您问题的另一种方法。希望它会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多