javascript - 按要上传的文件大小对文件数组进行分组
问题描述
我正在尝试创建一个函数,该函数可以将要上传的文件数组分组为 10MB 或更少的块。例如小规模。
例子:[1mb, 1mb, 5mb, 4mb, 9mb]
预期输出:[[5mb, 4mb, 1mb], [9mb, 1mb]]
我需要该函数遍历一个数字数组并根据最大 10mb 大小对它们进行分组。我对我应该做些什么来实现这一点有点困惑。
谢谢
解决方案
我希望这对你有帮助。
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));
推荐阅读
- google-chrome-devtools - Chrome 扩展 - Devtools - 以编程方式调用元素选择器
- c - 适合快速搜索和简单添加/删除的 C 数据结构
- .net-core - dotnet 发布输出文件夹?
- java - 有没有办法在同一个项目中同时使用 auth0-spring-security-api 和 java-jwt?
- javascript - 如何在 reactJs 中使用 JSON 模式在按下 TAB 键时指向下拉菜单?
- symfony - API 未返回自动生成的 ID
- apache-spark - 将 libsvm 格式字符串 ("field1:value field2:value") 转换为值的 DenseVector
- sql - 如何加入同一个表但具有不同的标准以将多个结果作为列
- python - plt.imsave 错误地保存图像
- android - 将原生 Google 帐户选择器与 B2C 结合使用