Home > Software engineering >  Using Foreach or another function to reduce the amount of code
Using Foreach or another function to reduce the amount of code

Time:01-23

please help. I have such a code with Checkboxes. I need to shorten it, namely to go through it through Foreach. If you can shorten it in another way, then please write it..

let FormData = {
   DisplayName: $("#DisplayName").is(":checked"),
   Department: $("#Department").is(":checked"),
   Post: $("#Post").is(":checked"),
   Phone: $("#Phone").is(":checked"),
   Location: $("#Location").is(":checked"),
   Dinner: $("#Dinner").is(":checked")
} 
console.log(JSON.stringify(FormData));

I haven't really tried anything yet. But I didn't really find the answer I needed..

CodePudding user response:

You can declare the fields separately in an array and then use the Array.reduce method to make the object you want:

let FormData = ['DisplayName', 'Department', 'Post', 'Phone', 'Location', 'Dinner'].reduce((acc, field) => {
    acc[field] = $(`#${field}`).is(':checked');
    return acc;
}, {});

CodePudding user response:

If you don't know the names of the checkboxes and you want to perform this operation of collecting their state on all the checkboxes of a form, you can use this code.

var jsonObject = {};

// For each checkbox - Feed Json object
$('input[type=checkbox]').each(function(index){ jsonObject[$(this).attr('id')] = $(this).is(':checked'); });

console.log(JSON.stringify(jsonObject));

The principle is to use a selection of the checkboxes present on the page to then perform a loop on this selection and recover for each of the boxes their ID and their state.

  • Related