Если вы попытаетесь заменить, используя строку, она заменит только первый экземпляр этой строки. Если вместо этого вы используете регулярное выражение, он заменит все совпадения этой строки. Это должно быть довольно просто, и регулярное выражение очень читабельно. Я бы сделал что-то вроде этого:
const replacements = [
{ regex: /–/, replacement: '-' },
{ regex: /”/, replacement: '"' },
{ regex: /„/, replacement: '"' }
];
let newStr = '”Lorem ipsum dolor sit amet – consectetur...'; // Full str
replacements.forEach(set => {
newStr = newStr.replace(set.regex, set.replacement);
});
Я не проверял приведенный выше код, но суть его должна прекрасно работать в вашей функции. Если вы хотите расширить его, просто разверните массив замен.