const segmenter = new Intl.Segmenter(); const areStringsEqual = (first, second) => first.localeCompare(second, undefined, { sensitivity: "accent" }) === 0; const isPalindrome = word => { const graphemes = Array.from(segmenter.segment(word)).map(x => x.segment); let [left, right] = [0, graphemes.length - 1]; while (left < right) { if (!areStringsEqual(graphemes[left], graphemes[right])) { return false; } left++, right--; } return true; };