var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
var partIndex = Math.ceil(arr.length / 5);
for (var i = 5; i >=partIndex; i--) {
arr.splice(-partIndex );
}
结果是:空白,1 2 , 3 4 5 , 6 7 8 , 9 10 11
很显然,当数组的元素在某个数字的时候,可能会发生意想不到的事
,那么有没有什么好点的方法来更加平均
的分配呢
希望的结果是:11个,足够分5份
结果是这样
@echo醉老仙,不好意思我看错了,slice
和splice
是两个不同的函数。所以只要这样就行了:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
console.log(arrayParts(arr, 5));
function arrayParts(arr, n) {
var result = [];
var partSize = Math.ceil(arr.length / n);
for (var i = 0; i < arr.length; i += partSize) {
result.push(arr.slice(i, i + partSize));
}
return result;
}
这几天用过几次,发现chat都是瞎掰的,它不会验证是否正确,只能机械的给出答案
但反复问几次,改变方法后,还真有一个可以实现差不多的
function divideArrayIntoParts(arr, parts) {
var results = [];
var length = arr.length;
var i = 0;
while (i < length) {
var size = Math.ceil((length - i) / parts);
results.push(arr.slice(i, i + size));
i += size;
parts--;
}
return results;
}
var arrayToDivide = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
var parts = 5;
var result = divideArrayIntoParts(arrayToDivide, parts);
console.log(result);
它不会验证是否正确,只能机械的给出答案
说起来,我确实亲自运行了我这个代码(和GPT给的逻辑一样),而且还运行了好几次,但我没有意识到它只分了4份,根本不符合要求,所以我也直接发出来了。
可以这么说,除了编造错误结果这一点不一样之外,GPT和我具有一致的行为逻辑
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
console.log(arrayParts(arr, 5));
function arrayParts(arr, n) {
var result = [];
var partSize = Math.ceil(arr.length / n);
for (var i = 0; i < arr.length; i += partSize) {
result.push(arr.slice(i, i + partSize));
}
return result;
}
23楼不好,12个分不均匀
看起来GPT给的答案确实挺好的:
您的代码中使用
splice()
函数来删减数组,但是如果数组元素个数不足时,splice()
函数的行为会发生变化,导致错误的结果。另外,删减后的数组也不一定是均分的。以下是一个根据数组长度均分数组的代码示例:
这个代码会将数组按照均等的部分分割,即使原数组元素个数不能被部分数整除也不会出现错误的结果。您可以根据需要调整
partCount
来分割为不同的部分数。白日梦还是要做的blog.wz52.cn