주어진 검색 매개변수 키(예: from)를 사용하여 URL 부분 내의 중첩된 URL에서 대상 검색 매개변수(예: id)의 값을 추출합니다.
예를 들어 URL /main?from=/details?from=/more?id=456의 경우 getNestedSearchParamValue 함수는 from에서 검색 매개변수를 찾아 중첩된 URL을 추출합니다.
... const nestedUrl = new URL(urlPart, dummyUrl); const nestedUrlPart = nestedUrl.searchParams.get(nestedParamKey) ?? ""; ...
먼저 중첩된 URL /details?from=/more?id=456이 추출됩니다. URL에 다른 검색 매개변수가 포함되어 있으므로 getNestedSearchParamValue 함수는 자체 호출하여 추출된 URL /details?from=/more?id=456을 동일한 NestedParamKey(from) 및 targetParamKey(id)와 함께 urlPart로 전달합니다.
... if(nestedUrlPart.includes(nestedParamKey)){ return getNestedSearchParamValue(nestedUrlPart, nestedParamKey, targetParamKey); } ...
첫 번째 재귀 호출에서nestedUrlPart는 /more?id=456이 됩니다. 이 URL에는 (nestedParamKey)의 검색 매개변수가 포함되어 있지 않기 때문에 이것이 id 매개변수(targetParamKey)를 검색하기 위한 대상 URL임을 나타냅니다. 따라서 이 url 부분에서 검색 매개변수 id 값을 추출하세요.
... else { const targetUrl = new URL(nestedUrlPart, dummyUrl); return targetUrl.searchParams.get(targetParamKey); } ...
기능
const dummyUrl = "http://localhost"; function getNestedSearchParamValue(urlPart: string, nestedParamKey: string, targetParamKey: string): string | null { const nestedUrl = new URL(urlPart, dummyUrl); const nestedUrlPart = nestedUrl.searchParams.get(nestedParamKey) ?? ""; if(!nestedUrlPart){ return null; } if(nestedUrlPart.includes(nestedParamKey)){ return getNestedSearchParamValue(nestedUrlPart, nestedParamKey, targetParamKey); } else { const targetUrl = new URL(nestedUrlPart, dummyUrl); return targetUrl.searchParams.get(targetParamKey); } }
사용방법
const url = "/main?from=/details?from=/more?id=456"; const value = getNestedSearchParamValue(url, "from", "id"); console.log(value);
출력
[LOG]: "456"
도우미 함수 getUrlPartSearchParams 사용
const queryDelimiter = "?"; function getUrlPartSearchParams(urlPart: string):URLSearchParams | null { const [_, ...query] = urlPart.split(queryDelimiter); const queryStr = query.join(queryDelimiter); return new URLSearchParams(queryStr); }
getNestedSearchParamValue 함수는 다음과 같습니다
function getNestedSearchParamValue(urlPart: string, nestedParamKey: string, targetParamKey: string): string | null { let searchParams = getUrlPartSearchParams(urlPart); const nestedUrlPart = searchParams?.get(nestedParamKey); // console.log(nestedUrlPart) if(!nestedUrlPart) { return null; } if (nestedUrlPart.includes(nestedParamKey)) { return getNestedSearchParamValue(nestedUrlPart, nestedParamKey, targetParamKey); } else { searchParams = getUrlPartSearchParams(nestedUrlPart); return searchParams?.get(targetParamKey) ?? null; } }
https://developer.mozilla.org/en-US/docs/Web/API/URL
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
위 내용은 JavaScript의 재귀 논리를 사용하여 중첩된 URL 매개변수를 효율적으로 추출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!