【发布时间】:2020-10-20 22:34:24
【问题描述】:
我正在尝试创建一个函数,该函数可以将要上传的文件数组分组为 10MB 或更少的块。例如小规模。
示例:[1mb, 1mb, 5mb, 4mb, 9mb]
预期输出:[[5mb, 4mb, 1mb], [9mb, 1mb]]
我需要该函数遍历数字数组并根据最大 10mb 大小对它们进行分组。我有点困惑我应该怎么做才能做到这一点。
谢谢
【问题讨论】:
标签: javascript node.js arrays
我正在尝试创建一个函数,该函数可以将要上传的文件数组分组为 10MB 或更少的块。例如小规模。
示例:[1mb, 1mb, 5mb, 4mb, 9mb]
预期输出:[[5mb, 4mb, 1mb], [9mb, 1mb]]
我需要该函数遍历数字数组并根据最大 10mb 大小对它们进行分组。我有点困惑我应该怎么做才能做到这一点。
谢谢
【问题讨论】:
标签: javascript node.js arrays
希望对你有所帮助。
var data = [1, 1, 5, 4, 9];
function getGroups(inputes, maxSize) {
inputes.sort((a, b) => b - a); //sort DESC
var result = [];
while (inputes.length) {
var groups = [];
var sum = inputes[0]; // pick first one (the biggest)
groups.push(inputes[0]);
inputes.splice(0, 1); //remove picked item
var j = 0;
while (j < inputes.length && sum < maxSize) {
if (inputes[j] + sum <= maxSize) {
sum += inputes[j];
groups.push(inputes[j]);
inputes.splice(j, 1);
} else {
j++;
}
}
result.push(groups);
}
return result;
}
console.log(getGroups(data , 10));
【讨论】: