とりあえずコードを。
理屈としては、分割する数を決める=>余りは分割数以下になるので割り振る=>実際に分割という感じですね。
function separate(array, total_split){
let array_length = array.length;
let min_len = Math.floor(array_length / total_split); // 切り捨て
let rest = array_length % total_split; //余り
let max_len = min_len + 1; //余りの数はtotal_split未満になるので1づつ割り振れば良い
let max_num = rest;
let min_num = total_split - rest;
separated_array = []
let start = 0;
let end = 0;
for (let i=0;i<total_split;i++){
if (i <= min_num){
end += min_len;
separated_array.push(array.slice(start, end))
start = (end + 1)
}else{
end += max_len;
separated_array.push(array.slice(start, end))
start = (end + 1)
}
}
console.log(start, end);
return separated_array;
}
const array_length = 1001;
const total_split = 3;
sample_array = [];
for(let i=0;i<array_length;i++){ sample_array.push("s"); }
separated_array = separate(sample_array, total_split);
console.log(separated_array);
let index = 1;
console.log(separated_array[index]);