用JavaScript折叠一个多维数组n:m

时间:2018-09-11 11:22:00

标签: javascript arrays

今天,对于我心爱的JavaScript堆栈器,我有一个相当棘手的问题。

鉴于以下情况

  • 我有一个数组,其中包含n个数组(例如,n个正整数,例如10)
  • 这些数组中的M个数组确实属于一类(例如,m个小于n的正整数,例如2)
  • 所以在10个元素的数组中,我有5个“子数组”

现在,我想折叠数组以包含我的所有类,看起来像[[:m]],m类中的所有数组都进入该数组。 传统上,这可以通过迭代的方式解决

arrayClasses = [[m]] // initialize m empty arrays
array.forEach((n) => if expr; arrayClasses[m].push(n) // where expr is used to determine the class

有趣的是,这也可以通过折叠数组(在这里谈论处理数据的Erlang方法)来完成,只需使用n-> [m]的转换函数即可。但是,我无法确定如何使用JavaScript内部实用程序来完成此工作。

// n = 6 elements contains m = 3 classes
let n = [
  [1],
  [1],
  [2],
  [2],
  [3],
  [3]
]

// can be transformed into m = 3 elements containing 2 elements each
let m = [
  [
    [1],
    [1]
  ],
  [
    [2],
    [2]
  ],
  [
    [3],
    [3]
  ]
]

0 个答案:

没有答案