gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:28:13 25 4
gpt4 key购买 nike

我想将一个数字数组拆分为 组,必须从大组到小组排序。
例如,在下面的代码中,拆分 的数组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]
Playground

// 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 )


更新:
感谢 SimpleJ 的 answer ,我可以完成我的工作。
用例是一种将 HTML 列表拆分为“分块”列表的算法,这是使用 CSS Columns 无法轻松实现的想法。 .
Demo page

最佳答案

我不是 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) )

关于javascript - 将项目数组拆分为 N 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40166199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com