Требуется удалить слово из списка, и оставить только те элементы, которые не входят в это слово (["с", "ц", "с", "п", "р", "е", "о"], "слово"))

Рейтинг: -3Ответов: 1Опубликовано: 15.01.2023
const removeLetters = (letters, word) => {

    const result = [];
   
    const newObj = letters.reduce((result, current) => ({ ...result, [current]: (result[current] || 0) + 1 }), {});
    
    const wordArr = [...word];
    for (let letter of wordArr) {
      if (!newObj[letter]) {
       result.push(letter);
        }
     }
     return result;
 };

Пример:

console.log(removeLetters(["с", "ц", "с", "п", "р", "е", "о"], "слово"))

Результат:

[ "ц", "с", "п", "р", "е"]

Ответы

▲ 0Принят

В коде в вопросе перепутан порядок, какие символы откуда должны удалиться.

Также не хватает изменения количества в словаре, чтобы знать нужно ли удалять символ или нет

const removeLetters = (letters, word) => {

  const result = [];

  const wordArr = [...word];
  const newObj = wordArr.reduce((result, current) => ({ ...result,
    [current]: (result[current] || 0) + 1
  }), {}); // подсчитываются символы в слове

  for (let letter of letters) {
    if (!newObj[letter]) {
      result.push(letter);
    } else {
      newObj[letter] -= 1; // удаляется повторение символа
    }
  }
  return result;
};

console.log(removeLetters(["с", "ц", "с", "п", "р", "е", "о"], "слово")) // [ "ц", "с", "п", "р", "е"]