2017-12-30 39 views
0

내가처럼 보이는 쿼리 문자열 얻으려고 :깔끔하게 쉼표로 구분 된 값으로 쿼리 문자열을 얻을

// formats = ['hlp', 'clp'], focuses = ['coding', 'robotics'] 
var query = jQuery.param({formats, focuses}); 
query = query.replace(/%5B%5D/g, ''); 
query = query.replace(/(?!^)&formats=/g, ','); 
query = query.replace(/(?!^)$focuses=/g, ','); 

하지만 어떻게 든 결말 유지 :이 작업 한

?focuses=coding,robotics,electronics&format=clp,hlp 
// or this 
?focuses=coding,robotics,electronics 
// or this 
?focuses=coding&format=clp 

을 최대 :

?formats=hlp,clp,coding,robotics,electronics 

답변

1

사용자 지정 기능은 다음과 같습니다

function query(args){ 
    return "?" + Object.entries(args).map(([key, value]) => { 
    return key +"="+ value; 
    }).join("&"); 
} 

그래서 하나를 수행 할 수 있습니다

query({ 
    focuses:["what", "ever"], 
    a:"property" 
}); 
+0

([그것을 시도]에 http : // jsbin.com/todotapule/edit?console) –

0

이렇게하면됩니다. 재사용 할 수있는 기능이 필요하지 않은 경우 getQueryString이 필요하면 해당 기능 외부로 해당 코드를 이동할 수 있습니다.

var formats = ['hlp', 'clp'], focuses = ['coding', 'robotics','electronics']; 
 

 
function getQueryString(formats, focuses){ 
 
    var formatsString = formats.toString(); 
 
    var focusesString = focuses.toString(); 
 
    var finalString = "?focuses="+focusesString+"&format="+formatsString; 
 
    return finalString; 
 
} 
 

 
var result = getQueryString(formats, focuses); 
 
console.log(result);

1

그들을 전달하기 전에 당신이 원하는 형태로 객체를 가져옵니다 jQuery :

(210)
jQuery.param({ 
    formats: formats.join(','), 
    focuses: focuses.join(',') 
}); 

이 여전히 (유효한) %2C로 쉼표를 인코딩,하지만 당신은 정말 문자 그대로의 쉼표를 사용하려는 경우, 당신은 나중에 그들을 대체 할 수

jQuery.param({ 
    formats: formats.join(','), 
    focuses: focuses.join(',') 
}).replace(/%2C/g, ',');