Estoy tratando de convertir valores en cadena de consulta.
var obj = { param1: 'test', param2: true, } var str = ""; for (var key in obj) { if (str != "") { str += "&"; } str += key + "=" + obj[key]; } console.log(str); La cadena de consulta esperada sería así: test=true .
Sería mucho más fácil si usara los objetos según lo previsto, pero:
const obj = { param1: 'test', param2: 'true', param3: 'test2', param4: 'NO', } const entries = Object.values(obj) const trueObj = {} for (let i = 0; i < entries.length; i += 2) { trueObj[entries[i]] = entries[i + 1] } const params = new URLSearchParams(trueObj) const queryString = params.toString() console.log(queryString)Puede usar marcas de retroceso para insertar la cita. Sin embargo, tendrá que escribir un poco de lógica adicional en su variable obj para determinar qué parámetros deben pasarse como una cadena o solo el valor.
const string = `"NO"`; console.log(string) var obj = { param1: 'test', param2: 'true', param3: 'test2', param4: 'NO', } var str = ""; var i = 0; for (var key in obj) { if(i%2 ===0) { if(i!== 0) str += "&" + obj[key] + "="; else str += obj[key] + "="; } else str += obj[key] ; i++; } console.log(str); Eso debería funcionar según lo previsto.
Resultados:
test=true&test2=NO