Я работаю над минификатором SVG. И я пришел к этой потребности. SVG содержит множество чисел в виде строк, например:
123.66 12.50 162.9873 23.67
Я бы хотел изменить их на:
124 13 163 24
Сначала я попытался удалить длинные цифры:
// reduce the decimal to only 1 digit
source=source.replace(/(\d\.\d)\d+/g ,'$1');
А потом я попробовал
source=source.replace(/(\d)\.1/g,'$1');
source=source.replace(/(\d)\.2/g,'$1');
source=source.replace(/(\d)\.3/g,'$1');
source=source.replace(/(\d)\.4/g,'$1');
заменить 6.1 или 7.2 на 6 или 7 очень просто, как показано выше. Но как я могу превратить 6.8 в 7 или 9.9 в 10?
Я пробовал это, но не работал:
source=source.replace(/(\d)\.6/g,Number('$1')+1);
source=source.replace(/(\d)\.7/g,Number('$1')+1);
source=source.replace(/(\d)\.8/g,Number('$1')+1);
source=source.replace(/(\d)\.9/g,Number('$1')+1);
Есть какие-нибудь советы по этому поводу?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Убедитесь, что вы также выбрали десятичные дроби (если они есть), затем передайте функцию в качестве заменителя, которая их заменяет round:
const str = '123.66 12.50 162.9873 23.67 23.22';
console.info(
str.replace(/\d+\.\d+/g, Math.round)
);Просто используйте Math.round($i), не нужно обрабатывать данные как строки. Целые числа больше подходят для вашего случая использования.
Используйте функция как второй аргумент для
replace. Тогда используйтеround.