1

I get form elements from VueJS function call in a HTML form. I create a JSON like:

var elements = event.target.elements;
var form_elements = [];
for (var i = 0; i < elements.length; i++) {
    var element = {};
    element[elements[i].getAttribute('name')] = elements[i].value;
    form_elements.push(element);
}
form_elements = JSON.stringify(form_elements);

I get the JSON as follows:

var form_elements = [{'name':'John'},{'age':'20'},{'gender':'Male'},];

I want to convert this into:

var form_elements = {'name':'John','age':'20','gender':'Male'};

for ajax call. How to do this?

1
  • I added answer with minimal code, hope it will work as per your expectation. Thanks Commented Apr 6, 2018 at 5:54

3 Answers 3

3

Use Array.reduce() to combine the elements to a single object:

var elements = event.target.elements;

var form_elements = elements.reduce(function(r, el) {
  r[el.getAttribute('name')] = el.value;

  return r;
}, {});
Sign up to request clarification or add additional context in comments.

Comments

2

a temporary variable in for block is useless in your case, the final code maybe looks like this:

var elements = event.target.elements;
var form_elements = {};
for (var i = 0; i < elements.length; i++) {
    form_elements[elements[i].getAttribute('name')] = elements[i].value;
}

and the form_elements is what you need finally, try to JSON.stringify it.

Comments

0

Try this :

var form_elements = [{'name':'John'},{'age':'20'},{'gender':'Male'}];

var obj = {};

for (var i in form_elements) {
  obj[Object.keys(form_elements[i])[0]] = form_elements[i][Object.keys(form_elements[i])[0]]; 
}

console.log(obj); // {name: "John", age: "20", gender: "Male"}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.