_.partitionBy(data, (v) => v.name); vs partitionBy with native reduce vs partitionBy with forEach vs partitionBy with for loop