Вложенные методы(forEach)

function longest(s1, s2) {
  let res=""
 return (s1+s2)
   .split("")
   .sort()
   .forEach((item, index, array)=>{
   item!==array[index-1]?res+=item:""
   })
}
console.log(longest("aretheyhere", "yestheyarehere"))

Добрый, подскажите, что делаю не так: Задача следующая - Возьмите 2 строки s1 и s2, включающие только буквы от a до z. Возвращает новую отсортированную строку, максимально длинную, содержащую различные буквы - каждая из которых берется только один раз. Я уже решил ее через цикл for, но хотелось бы через методы и на последнем методе forEach он мне выдает undefined, с чем это связано?


Ответы (2 шт):

Автор решения: Grundy

.forEach - ничего не возвращает, именно поэтому в результате кода в вопросе получается undefined.

Вместо этого возвращать надо было res в которую и собирается результат

function longest(s1, s2) {
  let res = "";
  (s1 + s2)
  .split("")
    .sort()
    .forEach((item, index, array) => {
      item !== array[index - 1] ? res += item : ""
    })
  return res;
}
console.log(longest("aretheyhere", "yestheyarehere"))

→ Ссылка
Автор решения: Алексей Р

Почему бы не реализовать задачу про множества через множества?

function longest(s1, s2) {
    return Array.from(new Set(s1 + s2)).sort().join('');
}

console.log(longest("aretheyhere", "yestheyarehere"))

→ Ссылка