On se retrouve aujourd'hui pour la solution du précédent #KataOfTheWeek proposé par Maxime en début de semaine !
La solution en Typescript que je propose est basée sur l'utilisation des filtres Javascript, mais il est également possible d'utiliser une boucle for, ou encore une boucle for-of.
Cette solution aborde également la notion de dot-notation et d'array-notation
(l'utilisation du type any est toléré pour le typage du résultat car on ne connait pas le nombre de champs du résultat) :
function splitPackages(packages: string[]) {
// retrouver toutes les destinations possible
const destinations: string[] = [];
const result: any = {};
let nbErr: number = 0;
packages.forEach((pkg: string) => {
if (pkg !== "ERREUR") {
destinations.push(pkg.substring(0,2))
} else {
nbErr++;
}
});
// suppression doublons
const destUnique: string[] = [...new Set(destinations)];
// remplir chaque destination avec les numéros de suivi
destUnique.forEach( (dest: string) => {
const pkgs: string[] = packages.filter((pack: string) => pack.substring(0,2) === dest);
result[dest] = pkgs;
});
// ajout du nombre d'erreur
result.err = nbErr;
return result;
}
// Output :
// {
// DE: ["DE7788995U"],
// err: 1,
// FR: ["FR123456789A", "FR112233445F"],
// GB: ["GB987654321X"]
// }
console.log(splitPackages(["FR123456789A", "GB987654321X", "ERREUR", "FR112233445F", "DE7788995U"]));
A bientôt pour un nouveau #KataOfTheWeek !