#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);