Конвертировать объект Array в строку jquery - PullRequest
0 голосов
/ 04 мая 2018

Я отправляю форму через ajax и хочу отправить данные формы в виде строки. Ниже мой код.

var formdata=$(this).serializeArray();
var objList = [];
for (var i = 1; i <= $("input[name=Range]").val(); i++) {

tempObj = {};

$.each(formData, function (key, value) {


                        if (value.name.startsWith("member"){

                        }
                        else {
                            tempObj[value.name] = value.value;
                        }

                    });


                    tempObj["member"] = $("input[name=member"+i+"]").val();

                    tempObj["Range"] = 1;




                    objList.push(tempObj);

                }

                console.log(objList);

Если Range = '2', я получаю 2 объекта Array в консоли следующим образом:

Name:"John"  
Department:"Training"  
Areacode:"23"
Member:"2"



Name:"Sam" 
Department:"HR"
Member:"2"
Areacode:"13"

Но я хочу опубликовать данные в виде URL-адреса формы:

"Name=John&Department=Training&Member=2&Areacode=23"   



  "Name=Sam&Department=HR&Member=1&Areacode=13" 

Что я могу сделать в коде?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Из tempObj у вас уже есть:

const tempObj = {
  Name:"John"  ,
  Department:"Training"  ,
  Areacode:"23",
  Member:"2"
}

const strObj=Object.entries(tempObj).reduce( (str, entry,i) => `${str}${i>0?'&':''}${entry[0]}=${entry[1]}`, "")
    
console.log(strObj)
0 голосов
/ 04 мая 2018

Я буду продолжать ваш код гарантированно изменить то, что у вас есть.

Начнем с objList. И мы сопоставим этот массив для создания нового массива, но при условии, что массив объектов будет массивом строк.

Затем вы можете добавить метод Reduce для перебора объекта и создания строки независимо от того, сколько у него значений.

var formdata = $(this).serializeArray();
var objList = [{
Name:"John", 
Department:"Training"  ,
Areacode:"23",
Member:"2"},{
Name:"Sam" ,
Department:"HR",
Member:"2",
Areacode:"13",
Extra:"value"}];

let arrStr = objList.map(obj => {
  return Object.entries(obj).reduce( (key, val,i) => `${key}${i>0?'&':''}${val[0]}=${val[1]}`, "");
})

console.log("This is the array of strings:"+arrStr);
console.log("String 1:"+arrStr[0]);
console.log("String 2:"+arrStr[1]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

"Name=John&Department=Training&Member=2&Areacode=23"

Надеюсь, это поможет:)

...