정규식을 사용하여 adjustUrlParameter (url, param) 함수를 사용하여 URL에 쿼리를 대체하거나 추가해야합니다. URL에 동일한 검색어가있는 경우 검색어를 param으로 바꿔야합니다 (예 : google.com?ID=200에서 ID = 501이 ID = 200을 바꿔야 함). 쿼리가없는 경우 URL 끝에 쿼리를 추가해야합니다. 마지막으로 쿼리가 존재하지만 유형이 다른 경우 쿼리를 추가하고 '&'를 사용하여 기존 쿼리와 분리해야합니다. 예를 들면 다음과 같습니다.
adjustUrlParameter('google.com?ID=501', 'TYPE=444') // => 'google.com?ID=501&TYPE=444'
내 코드가 동일한 쿼리 유형을 대체하지 않습니다. 'google.com?ID=200'을 반환하는 대신 'google.com?ID=501&ID=200'을 반환합니다. 내 코드는 다음과 같습니다.
var adjustUrlParameter = function(url, param) {
var urlQuery = url.match(/\w+\W+/g);
for (var i = 0; i < urlQuery.length; i++) {
if (param === urlQuery[i]) {
return url.replace(/\?.+$/, '?' + param);
}
}
if (url.match(/\?/)) {
return url + "&" + param;
} else {
return url + "?" + param;
}
};
adjustUrlParameter ( 'google.com?ID=501', 'ID = 201')가 적절한 결과 ( 'google.com?ID=201')를 반환하려면 어떻게해야합니까?
문제는 if 문이 true를 반환하지 않는다는 것입니다. for 루프에 console.logs를 넣고 지켜보십시오. urlQuery [i]가 "ID ="param이 "ID = 444"를 반환하는시기를 확인할 수 있습니다. 그들은 같지 않습니다.
console.log("parameter:"+param); //parameter:ID=444
console.log("url_query: "+urlQuery[i]); //url_query: ID=
아래와 같이 for 루프를 변경하면 쿼리 매개 변수가 동일한 유형으로 바뀝니다.
for (var i = 0; i < urlQuery.length; i++) {
console.log("parameter:"+param);
console.log("url_query: "+urlQuery[i]);
var paramType = param.split("=");
console.log("paramType"+paramType);
var tmp = paramType[0]+"="; //since urlQuery[i] always has a character at the end
console.log(tmp);
if (tmp === urlQuery[i]) {
return url.replace(/\?.+$/, '?' + param);
}
}
실행 adjustUrlParameter('google.com?ID=501', 'ID=444')
하면 출력이"google.com?ID=444"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다