букву в строке? если две одинаково - то вернуть ту, которая раньше в алфавите
function letters(str) {
let re = /[a-zA-Z]/
str = str.toLowerCase().split('').filter(e=>{
if (re.test(e)) return e
})
return str.reduce((p,n,i,arr)=>{
let elOne = arr.filter(e=>e===p)
let elTwo = arr.filter(e=>e===n)
return elOne.length > elTwo.length ? p : elOne.length == elTwo.length ? [...elOne,...elTwo].sort((a,b)=>a<b?-1:1)[0] : n
}, null)
}
Можно одним редюсом и сравнить коды
вот тебе в один проход: function letters(string) { const abcBook = {}; let maxCount = 0; let maxCode = Infinity; string.toLowerCase().split('').forEach(letter => { if (!/[a-z]/.test(letter)) return; const code = letter.charCodeAt(0); const count = abcBook[code] ? abcBook[code] + 1 : 1; if (count === maxCount && code < maxCode) { maxCode = code; } else if (count > maxCount) { maxCount = count; maxCode = code; } abcBook[code] = count; }) return String.fromCharCode(maxCode); }
Обсуждают сегодня