const regionsJSON = [{
nom: "Bretagne",
code: "53"
}, {
nom: "Grand Est",
aliases: ["Alsace", "Champagne-Ardenne", "Lorraine"],
code: "44"
}];
const delimiters = [",", "-", " "];
const transformAliasses = (aliases: string[]): string[] => {
const transformed = [];
aliases.forEach((alias: string) => {
const aliasDelimiter = delimiters.find((delim: string) =>
alias.includes(delim)
);
if (aliasDelimiter) {
delimiters
.filter((delim) => delim !== aliasDelimiter)
.forEach((delim) => transformed.push(alias.replace(aliasDelimiter, delim)));
}
transformed.push(alias);
});
return transformed;
};
const getPlaceName = (name: string, aliases: string[]): string => {
return aliases.length
? `${transformAliases(aliases).join(" ")} ${name}`
: name;
};
const foundRegions = regionsJSON
.filter(({ nom, aliases = [] }) =>
localeContains(getPlaceName(nom, aliases), search)
)
.map((region) => ({
code: region.code,
place_name: region.nom,
label: regionLabel,
type: "region",
}));