Study/JavaScript

[JS] URLSearchParams

taecongs 2023. 8. 1. 18:21

알고있으면 좋은 Javascript Tip✨


URLSearchParams()

  • URLSearchParams API는 URL 쿼리 파라미터에서 자료를 가져오는 방법을 제공한다.

URL 객체 사용

let url= new URL('https://sisiblog.tistory.com?mode=night&page=2');
let params = new URLSearchParams(url.search);
const $queryStr = new URLSearchParams(window.location.search);
  • 직접 URL 객체를 만들어서 URLSearchParams 객체를 생성할 수도 있다.
  • url.search 대신 window.location.search를 사용할 수 있다.
  • window.location.search는 브라우저에서 입력받은 값을 사용해 URLSearchParams 객체를 생성할 수 있다.

쿼리 문자열 사용

let params1 = new URLSearchParams("mode=night&page=2");
let params2 = new URLSearchParams("?mode=night&page=2");
  • &로 구분하는 URI 리소스 값을 문자열 그대로 입력할 수도 있다.
  • '?'까지 포함해서 URLSearchParams 객체를 만들 수 있다.

 

유틸리티 메드

let url= new URL('https://sisiblog.tistory.com?mode=night&page=2&mode=day');
let params = new URLSearchParams(url.search);
  • 모든 예제는 위 코드의 params를 사용했다.

1.get

let mode = params.get('mode'); // night
let time = params.get('time'); // null
  • 매개변수로 전달 받은 값으로 첫 번째로 검색되는 값을 가져온다.
  • 만일 찾지 못한 경우 null을 반환한다.

2.getAll

let modes = params.getAll('mode'); // ["night", "day"]
  • get() 메드와는 다르게 전달 받은 매개변수 값으로 모든 항목을 검색한다.

3.has

let hasMode = params.has('mode'); // true
let hasTime = params.has('time'); // false
  • query parameter에 특정한 이름이 존재하는지 확인한다.
  • 쿼리 스트링의 특정 키가 존재하면 true, 그렇지 않다면 false 반환

4.toString

params.toString(); // mode=night&page=2&mode=day
  • 쿼리 문자열 자체를 출력한다.

5.append

params.append('tag', "js"); 
params.toString(); // mode=night&page=2&mode=day&tag=js
  • search params에 key-value 쌍으로 항목을 추가한다.
  • 쿼리에 tag=js 라는 항목이 추가된 것을 확인할 수 있다.
  • 만일 같은 key가 여러번 추가되면 append() 메드는 쿼리에 항목을 여러번 추가한다.

6.set

params.set('page', 3);
params.toString(); // mode=night&page=3&mode=day&tag=js&tag=tricks
  • set() 메서드는 매개변수로 전달된 값으로 쿼리 내용을 수정한다.
  • 만일 key가 여려개 존재할 경우 set() 메서드는 다른 항목은 지워버리고 하나로 세팅한다.
  • 만일 같은 key가 여러번 추가되면 append() 메드는 쿼리에 항목을 여러번 추가한다.
params.set('tag', "javascript")
params.toString(); // mode=night&page=3&mode=day&tag=javascript
  • 여기서 입력받은 매개변수 key가 쿼리에 존재하지 않는다면 새 항목을 추가한다.
params.set('n',"J") // mode=night&page=3&mode=day&tag=javascript&n=J

7.entries

console.log(...params.entries()); 

for(var [key, value] of params.entries()) {
   console.log(key+ ' => '+ value); 
}

// mode => night
// page => 3
// mode => day
// tag => javascript
// n => j
  • 쿼리 항목의 key-value 쌍을 루프돌 수 있도록 iterator를 반환한다.

8.keys

console.log(...params.keys()); // mode page mode tag n
  • search params의 key 목록을 루프할 수 있는 iterator를 반환한다.

9.values

console.log(...params.values()); // night 3 day javascript j
  • search params의 value 목록을 루프할 수 있도록 iterator를 반환한다.

10.forEach

params.forEach(function(value, key) {
  console.log(key,  value);
});
  • params를 루프할 수 있다.

11.sort

params.sort();
params.toString(); // mode=night&mode=day&n=j&page=3&tag=javascript
  • key-value 쌍을 정렬한다.

12.delete

params.delete('mode');
params.toString(); // name=Jeep&page=3&tag=javascript
  • 전달받은 매개변수에 해당하는 모든 항목을 삭제한다.

'Study > JavaScript' 카테고리의 다른 글

[JS] in & hasOwnProperty  (0) 2023.08.30
[JS] min & max  (0) 2023.08.09
[JS] closest & parentElement  (0) 2023.07.26
[JS] contains & indexOf  (0) 2023.07.26
[JS] event.target  (0) 2023.07.26