将数组随机填充到下面数组中,数量尽可能相同

将数组随机填充到下面数组中,数量尽可能相同

完善版

var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var group = [
	[],
	[],
	[],
	[],
];

function split(arr) {
	// 随机排序数组
	arr.sort(function() {
		return 0.5 - Math.random();
	})
	// 指针
	let k = 0;
	
	// 计算每个数组里面的个数
	let nu = Math.round(arr.length / group.length);
	// let nu = Math.floor(arr.length / group.length);

	// 若存在小数 +1
	let nus = nu;
	// 判断是不是小数
	console.log((arr.length / group.length) % 1);
	if ((arr.length / group.length) % 1 >=0.5) {
		nus = Math.floor(arr.length / group.length);
	}else{
		nus = Math.ceil(arr.length / group.length);
	}
	
	// if ((arr.length / group.length) % 1 !== 0) {
	// 	nus = Math.ceil(arr.length / group.length);
	// }
	
	// 数据处理
	if (nus == nu) {
		console.log('数组内数据:',nu);
		for (let i = 0; i < group.length; i++) {
			for (let j = 0; j < nu; j++) {
				group[i].push(arr[k++]);
			}
		}
	}else{
		console.log('数组1内数据:',nus,'其他数组内数据:',nu);
		for (let i = 0; i < group.length; i++) {
			if(i == 0){
				for (let j = 0; j < nus; j++) {
					group[i].push(arr[k++]);
				}
			}else{
				for (let j = 0; j < nu; j++) {
					group[i].push(arr[k++]);
				}
			}
		}
	}

}

split(arr1);
console.log(group);

残缺版 

var arr1 = [1,2,3,4,5,6,7,8,9];
var group = [[],[],[],[]];

function split(arr) {
	// 随机排序数组
	arr.sort(function(){
		return 0.5 - Math.random();
	})
	let nu = Math.floor(arr.length / group.length);
	let k = 0;
	// console.log(nu)
	for(let i=0; i<group.length; i++){
		if(i==0){
			arr.map((item,index)=>{
				if(index<(nu+1)){
					group[0].push(item)
					k++;
				}
			})
		}else{
			for(let j=0; j<2; j++){
				group[i].push(arr[k++])
			}
		}
	}
}
split(arr1);
console.log(group);

 

posted @   JackieDYH  阅读(6)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示