Если делать через JS, то Вам нужно менять не width, а initial-scale. Рассчитывать его и менять.
Но лучше делать это через CSS, мне кажется это будет более производительно (предположение)
p.s. Копипастить код не обязательно, есть же тернарные операторы
const mediaQueryList = window.matchMedia('(max-width: 570px)');
mediaQueryList.addEventListener('change', () => {
document.querySelector('meta[name="viewport"]').setAttribute(
'content',
'width=device-width, user-scalable=no, initial-scale=' +
(mediaQueryList.matches ? document.clientWidth / 570 : 1.0)
);
});
mediaQueryList.dispatchEvent(new Event('change')); // Это эмулирует событие