Это должно сработать:
const remove= (word, rack)=>rack.replace(new RegExp('['+word+']','ig'),'');
let rack = "BOYCOTTS", word = "BOY"
console.log(remove(word,rack));
console.log(remove('toy',rack));
console.log(remove('AID',rack));
Я создаю регулярное выражение из word
, окружая его [
и ]
и применяя его глобально (флаг: g
). Таким образом, все вхождения букв в word
будут удалены из stack
, когда я использую регулярное выражение в вызове . replace(regexp,'')
.
Применяя дополнительный флаг i
, регулярное выражение создается без учета регистра, как вы можете видеть во втором вызове с word='toy'
.
EDIT
ОК, если вы хотите удалить каждую букву только один раз можно так:
const remove= (word,rack)=>word.split('').reduce((a,c)=>a.replace(c,''),rack);
let rack = "BOYCOTTS", word = "BOY"
console.log(remove(word,rack));
console.log(remove('TOY',rack));
console.log(remove('AID',rack));