Итерация элементов jQuery в другом порядке

#javascript #jquery #arrays #json #for-loop

#javascript #jquery #массивы #json #for-цикл

Вопрос:

Прямо сейчас у меня есть форма с именем customers_form, и я перебираю jquery в порядке последовательности и экспортирую значение в виде вывода json. Я хочу изменить порядок и изменить имя входного элемента при преобразовании в json, как показано ниже

 inputs = jQuery('#customers_form input')
    customerVal  = "{"   "Customer"  ":{";
    for (var i = 0; i < inputs.length; i  ) {
        if (inputs[i].id !== 'random_assignment_number') {
            customerVal  = '"'   inputs[i].id   '"'   ':'   '"'   inputs[i].value   '"' ','
        } else {
            console.log(inputs[i].id)
        }
    }
 customerVal  = "}}";
  

В настоящее время мой порядок Custsomers_Form

 First_Name,
Last_Name,
DOB,
Addr1,
Add2,
City,
State,
Cntry,
Role
  

Ожидаемый результат, как показано ниже в порядке, и необходимо изменить идентификатор / имя элемента на другое имя для вывода json из html-элемента.

 LAST NAME,
FIRST NAME,
ROLE,
STREET ADDRESS,
APT/BLVD,
CITY,
STATE,
COUNTRY,
DATE OF BIRTH
  

Комментарии:

1. Не создавайте JSON путем объединения строк. Создайте объект или массив, затем используйте JSON.stringify() для преобразования его в JSON.

2. Порядок свойств в объекте JSON не должен иметь значения.

3. Спасибо @Barmar. Как я могу изменить имя входного элемента в json?

Ответ №1:

Используйте массив, который задает сопоставление между входными идентификаторами и ключами, которые вы хотите использовать в JSON. И выполните итерацию по этому массиву, чтобы получить свойства в нужном порядке.

 const input_mapping = [['LAST NAME', 'Last_Name'], ['FIRST NAME', 'First_Name'], ['ROLE', 'Role'], ...];
let customerObj = {Customer: {}};
input_mapping.forEach(([key, id]) => customerObj.Customer[key] = $("#"   id).val());
let customerval = JSON.stringify(customerObj);