Лучший способ разделить параметры запроса, присутствующие в строке, а затем закодировать

У меня есть несколько строк, которые могут быть в этом формате:

const s1 = "https://test1.com/testPage";
const s2 = "https://test2.com/testPage?specificParam=1"
const s3 = "https://test3.com/someOtherPage?specificParam=2&restParam=3";

Поэтому, когда я читаю это в функции, мне нужно проверить, включены ли в строку параметры запроса, если да, то мне нужно закодировать ее, используя ее window.btoa() для всех параметров запроса. Если не напрямую перенаправить. Может ли кто-нибудь помочь, как это сделать?

function test(path){
   const href = window.location.origin + path;
   if (href.includes('?')){
      // split all the query params and then attach `btoa` to it and then openthe url 
       with encoded params
   }
   window.open(href, '_blank', 'no-referer');
} 

🤔 А знаете ли вы, что...
JavaScript позволяет создавать мобильные приложения для iOS и Android с использованием фреймворков, таких как React Native и NativeScript.


54
1

Ответ:

Решено

Вы можете использовать конструктор URL.

const url = new URL("https://test3.com/someOtherPage?specificParam=2&restParam=3");
if (url.search) {
    // use url.search or url.searchParams
    // base64 encode each query param value
    url.search = new URLSearchParams([...url.searchParams].map(([k, v]) => [k, btoa(v)]));
}