将项目数组拆分为 N 个数组

2024-02-14

我想将数字数组分成N组,必须从larger to smaller groups.

例如,在下面的代码中,分割一个数组12数入5数组,结果应该从大(组)到小均匀分割:

source: [1,2,3,4,5,6,7,8,9,10,11,12]
  ⬇      
output: [1,2,3] [4,5,6] [7,8] [9,10] [11,12]

操场 http://jsbin.com/fotuyuw/edit?js,output

// set up known variables
var arr = [1,2,3,4,5,6,7,8,9,10,11,12],
    numberOfGroups = 5,
    groups = [];

// split array into groups of arrays
for(i=0; i<arr.length; i++) {
  var groupIdx = Math.floor( i/(arr.length/numberOfGroups) );
  
  // if group array isn't defined, create it
  if( !groups[groupIdx] ) 
    groups[groupIdx] = [];
  // add arr value to group
  groups[groupIdx].push( arr[i] )
  
}

// Print result
console.log( "data: ", arr );
console.log( "groups: ", groups )

Update:

感谢 SimpleJ 的answer https://stackoverflow.com/questions/40166199/split-a-group-array-of-items-into-n-groups#answer-40166342,我可以完成我的工作了。
其用例是一种将 HTML 列表拆分为“分块”列表的算法,这是通过使用无法轻松实现的想法CSS 列 https://developer.mozilla.org/en-US/docs/Web/CSS/columns.

演示页面 http://codepen.io/vsync/pen/ORrJgz?editors=0010


我不是 100% 确定这应该如何在具有不同组数的不同大小的数组上工作,但这适用于您的 12 位示例:

function chunkArray(arr, chunkCount) {
  const chunks = [];
  while(arr.length) {
    const chunkSize = Math.ceil(arr.length / chunkCount--);
    const chunk = arr.slice(0, chunkSize);
    chunks.push(chunk);
    arr = arr.slice(chunkSize);
  }
  return chunks;
}



var arr = [1,2,3,4,5,6,7,8,9,10,11,12];
console.log( chunkArray(arr, 5) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将项目数组拆分为 N 个数组 的相关文章

随机推荐

  • 将 UTF-8 编码的 NSData 转换为 NSString

    我有UTF 8编码NSData来自 Windows 服务器 我想将其转换为NSString对于iPhone 由于数据包含在两个平台上具有不同值的字符 如度数符号 如何将数据转换为字符串 如果数据不是空终止的 您应该使用 initWithDa
  • 当只有插件源可用时,如何在 sbt 项目中使用插件?

    我想使用sbt 斯克鲁奇 https github com bancek sbt scrooge插件 但它的存储库现在不可用 http koofr github com http koofr github com 我想我应该将这个插件的源代
  • 如何在 NLTK 中进行依存解析?

    翻阅 NLTK 书 并不清楚如何从给定的句子生成依存树 本书的相关部分 依存语法子章节 https www nltk org book ch08 html dependencies and dependency grammar给出一个示例图
  • 数组与数组列表有显着差异吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中何时使用 ArrayList 而不是 array https stackoverflow com questions 412813 when to use arraylist over ar
  • 混合 C 和 C++...对函数的未定义引用 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 C 项目中 我尝试调用这个在 C 中定义的函数 int CyBtldr RunAction CyBtldr Action action
  • 什么分布式消息队列支持百万级队列?

    我正在寻找一个分布式消息队列 它将支持数百万个队列 每个队列每秒处理数十条消息 消息会很小 几十个字节 而且我不希望队列变得很长 每个队列最多有几十条消息 但是当系统运行时 队列应该保持相当长的状态空的 我不确定集群中有多少个节点 可能取决
  • 使用指南针指向实际坐标位置而不仅仅是北

    我见过一些这样的例子 但不确定到底如何实现它 例如iPhone 指南针 GPS 方向 https stackoverflow com questions 4130821 iphone compass gps direction 中我需要在
  • 欧拉计划问题 233

    我决定解决欧拉计划接下来 但我遇到了一些重大问题 我做了一些分析并取得了一些相当不错的进展 但现在我陷入了困境 这是我的工作 Lemma 1 由于圆经过 4 个角点 因此对于任意 n 至少有 4 个解 但对于圆周上的每个点 都可以通过反射发
  • 有没有一种在 python 中创建复制构造函数的好方法?

    我意识到有人提出了与此非常相似的问题 尽管不完全是这样 我想为我的类的构造函数提供一个可选参数 如果它是我的类的实例 则将复制该参数 例如 类似 我知道这段代码不起作用 class Foo object def init self foo
  • 在对象数组中查找具有“id”属性最大值的对象

    在我的对象数组中 我想找到具有最高值的对象id财产 这是我的数组 myArray id 73 foo bar id 45 foo bar 一般来说 我使用 grep查找数组中的值 如下所示 var result grep myArray f
  • 在 Android 中触摸并拖动图像

    我正在研究一些示例 其中我想拖动与 Android 中的触摸相对应的图像 有人知道我该怎么做吗 public class TouchBall extends Activity Override protected void onCreate
  • 如何选择任意行的相邻行(在 sql 或 postgresql 中)?

    我想根据特定条件选择一些行 然后从该集合中取出一个条目及其前后的 5 行 现在 如果表上有主键 例如 主键在数值上比目标行的键小 5 且比目标行的键多 5 我可以在数字上执行此操作 因此选择主键为 7 的行及其附近的行 select pri
  • 如何在 Android 中编辑弹出菜单项的尺寸?

    我有一个弹出菜单 当我单击按钮时会下拉 然而 我觉得这个菜单中的项目相对于我的应用程序的整体视图来说看起来不太好 我想知道是否可以编辑菜单中项目的尺寸 如果可能的话 也许可以缩短每件物品的高度 PopupMenu popup new Pop
  • NPM 包中 src 和 dist 文件夹的作用

    我在用着矩形 https github com mgonto restangular用于 HTTP 请求 我想使用 customPATCH 方法 我可以在 Restangular src 目录中看到它here https github co
  • Android setTextSize TextView移动基线并截断文本高度

    我正在尝试使用背景图像调整 TextView 的大小 我有一个扩展 TextView 类的类 并按如下方式添加 MyCustomTextView tv2 new MyCustomTextView this RelativeLayout La
  • 在 DataGridView 中编辑文本框单元格,就像它是普通文本框一样(按下箭头时不会跳转)

    我在 DataGridView 中有 多行 自动换行 文本框列 如果能够像普通文本框一样编辑它们 那就太好了 当我按下向下箭头时 我希望插入符在文本框中向下一行 我不希望它像通常那样跳到下一行 同样地 我希望按 Enter 键在文本框单元格
  • 如何在数据表JavaScript中制作垂直标题列表?

    如何在数据表中设置垂直标题列 It should be as follows and working as datatble 您正在寻找数学中称为矩阵转置的东西 要获得矩阵 表的转置 请将行转换为列
  • Android、Google Drive:Google 同意屏幕冻结

    我已将我的应用程序升级到 Google Drive REST API 及其 Java 包装器 如下所述 https developers google com drive android deprecation https develope
  • 在没有布局管理器的情况下将 JScrollPane 添加到 JPanel

    在开始之前 我知道不使用布局管理器是一个坏主意 通常我确实使用布局管理器 但是 我还让所有组件根据窗口的大小自动重新调整大小和重新定位 此外 我正在开发的程序在其整个生命周期中仅打算在一台机器上运行 请不要仅仅因为缺少布局管理器而对我投反对
  • 将项目数组拆分为 N 个数组

    我想将数字数组分成N组 必须从larger to smaller groups 例如 在下面的代码中 分割一个数组12数入5数组 结果应该从大 组 到小均匀分割 source 1 2 3 4 5 6 7 8 9 10 11 12 outpu