Untitled

Run Settings
LanguageJavaScript
Language Version
Run Command
const regionsJSON = [{ nom: "Bretagne", code: "53" }, { nom: "Grand Est", aliases: ["Alsace", "Champagne-Ardenne", "Lorraine"], code: "44" }]; const delimiters = ["-", " "]; const normalizeStr = (s) => s .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .toLowerCase(); const localeContains = (str, sub) => { if (!str || !sub || !str.length || (sub.length > str.length)) { return false; } let totalStr = "" + sub; if (sub.length > totalStr.length) { return false; } // if (totalStr.includes(" ")) { // totalStr = totalStr.replace(" ", "-"); // } return normalizeStr(str).includes(normalizeStr(totalStr)); }; const transformAliases = (aliases) => { const transformed = []; aliases.forEach((alias) => { const aliasDelimiter = delimiters.find((delim) => alias.includes(delim) ); if (aliasDelimiter) { delimiters .filter((delim) => delim !== aliasDelimiter) .forEach((delim) => transformed.push(alias.replace(aliasDelimiter, delim))); } transformed.push(alias); }); // console.log({ transformed }); return transformed; }; const getPlaceName = (name, aliases) => { return aliases.length ? `${transformAliases(aliases).join(" ")} ${name}` : name; }; const foundRegions = (search) => regionsJSON .filter(({ nom, aliases = [] }) => localeContains(getPlaceName(nom, aliases), search) ) .map((region) => ({ code: region.code, place_name: region.nom, label: "region", type: "region", })); console.log(foundRegions("Champagne Ardenne")); console.log(foundRegions("Champagne-Ardenne")); console.log(foundRegions("ChamArde")); console.log(foundRegions("Champ"));
Editor Settings
Theme
Key bindings
Full width
Lines