INNER CODE UNIT · JavaScript
groupBy
pegaltier/awesome-utils-dev · utils-script/jsfunctions.js:31
const groupBy = (x,f)=>x.reduce((a,b,i)=>((a[f(b,i,x)]||=[]).push(b),a),{});
// https://advancedweb.hu/how-to-use-async-functions-with-array-map-in-javascript/
const mapInGroups = (arr, iteratee, groupSize) => {
const groups = groupBy(arr, (_v, i) => Math.floor(i / groupSize));
return Object.values(groups)
.reduce(async (memo, group) => [
...(await memo),
...(await Promise.all(group.map(iteratee)))
], []);
};
const res = await mapInGroups(arr, async (v) => {
console.log(`S ${v}`);
await sleep(v);
console.log(`F ${v}`);
return v + 1;