首页 > 解决方案 > 按要上传的文件大小对文件数组进行分组

问题描述

我正在尝试创建一个函数,该函数可以将要上传的文件数组分组为 10MB 或更少的块。例如小规模。

例子:[1mb, 1mb, 5mb, 4mb, 9mb]

预期输出:[[5mb, 4mb, 1mb], [9mb, 1mb]]

我需要该函数遍历一个数字数组并根据最大 10mb 大小对它们进行分组。我对我应该做些什么来实现这一点有点困惑。

谢谢

标签: javascriptnode.jsarrays

解决方案


我希望这对你有帮助。

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));

推荐阅读