Tengo un formulario con entrada de usuario y serializo los datos en JSON. Lo que quiero es que para cada valor de una clave específica, quiero agregar un prefijo cuando el usuario debe completar la entrada, como si el usuario introdujera 123, la salida final debería ser http://123 , pero solo para un campo de entrada , no para cada campo de entrada en mi formulario.
Este es mi código, todo funciona hasta que hago el registro de la consola:
function convertFormToJSON(form) { var array = jQuery(form).serializeArray(); var json = {}; jQuery.each(array, function() { json[this.name] = this.value || ''; }); return json; } console.log(convertFormToJSON(document.getElementById("myform"))); var blah=convertFormToJSON(document.getElementById("myform"))); function addStringToValueInJSON(json, key, string) { for (var i = 0; i < json.length; i++) { json[i][key] = json[i][key] + string; } return json1; } function add() { addStringToValueInJSON(blah, "test", "!"); } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form id="myform"> <input type="text" id="test" name="test" value="2"> </form> const JSON = {} const formData = new FormData(document.getElementById('myform')) for (let [key, value] of formData.entries()) { key += '_' // added as edit to answer at comment JSON[key] = `http://${value}` } console.log(JSON) <form id="myform"> <input type="text" id="test" name="test" value="2"> </form> const JSON = {} const formData = new FormData(document.getElementById('myform')) for (let [key, value] of formData.entries()) { key += '_' // added as edit to answer at comment const vals = value.split(',') const finalValsArray = vals.map(val => `http://${val}`) JSON[key] = finalValsArray.toString() } console.log(JSON) <form id="myform"> <input type="text" id="test" name="test" value="2,3,5"> </form>