JS数组转为二维数组

  弄了个工具, 数组转为二位数组. 先看代码:

/**
 * 一维数组格式化为二维数组
 * @param arr 原数组
 * @param num 数组个数,默认2个.
 * @param direction 元素存放的方向,{1:按行存,0:按列存}, 默认0
 * @returns {Array}
 */
formatArray (arr,num=2,direction) {
	let leg = arr.length;
	direction = +!!direction
	let newArray = [];
	let leg2 = Math.ceil(leg/num);
	for (let i = 0; i < num; i++) {
		newArray.push([]);
	}
	let tmp = direction?leg2:num;
	let calc = [function (a,b) { 
			return a/b|0; 
		},
		function (a,b) { 
			return a%b; 
		}
	];
	let calcX = calc[direction];
	let calcY = calc[+!direction];
	for(let i =0; i<leg; i++) {
		newArray[calcY(i,tmp)][calcX(i,tmp)] = arr[i];
	}
	return newArray;
}

  整体思路就是根据取模的周期性和取整的周期递增性为二维数组填值. 写完之后, 发现自己真棒 (Real Water)! 然后给自己准备了一条测试数据:

arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

  默认值测试结果:
这个人很懒, 什么也没描述...
  看起来不错. 然后传入可能的参数测试, 比如3:
这个人很懒...
  一切都按照预期发展. 一直测试到7, 奇怪的事情发生了:
这个人...
客官们一定都发现了, 按行时, 最后一行没有元素. 怎么肥事?! 仔细对比了数据, 发现有些行应该是3个元素结果是4个, 导致最后一行本来有3个元素的反而一个也没有.
  思来想去(挠来挠去)也没什么好办法, 只好放在这里了…
  好像这些东西没什么用啊…我绝不承认这是在写BUG…
  算了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值