lavezzi1
@lavezzi1

Как заменить несколько значений в строке правильно?

Здравствуйте. Есть массив урлов, их нужно найти в файле (строке) и модифицировать.

Пока написал так:
fs.readFile(file, 'utf8', (readErr, data) => {
  let content = null;
  urls.forEach((url) => {
      content = `${content === null ? data : content}`.replace(url, `"<% static ${url} %>"`);
    });
});


Все работает, но кажется что можно лучше. Подскажите пожалуйста, как сделать правильней?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Зачем вообще переменная content? Ну или хотя бы почему бы её сразу нормально не инициализировать?
fs.readFile(file, 'utf8', (readErr, data) => {
  urls.forEach((url) => {
      data = data.replace(url, `"<% static ${url} %>"`);
  });
});


А можно и так:
fs.readFile(file, 'utf8', (readErr, data) => {
  const content = urls.reduce((content, url) => {
      return content.replace(url, `"<% static ${url} %>"`);
  }, data);
});
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Не очень понял - а в чём смысл сначала назначить null, а на первой итерации подменять его реальным значением? Да и зачем вообще использовать дополнительную переменную - тоже не очень ясно:

fs.readFile(file, 'utf8', (err, data) => {
  urls.forEach((url) => data = data.replace(url, `"<% static ${url} %>"`));
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы