【问题标题】:Iterate jQuery elements in different order以不同的顺序迭代 jQuery 元素
【发布时间】:2025-12-06 11:45:01
【问题描述】:

现在我有一个名为 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 += "}}";

我的 Customers_Form 订单目​​前是

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

预期输出如下所示,需要将元素 id/name 更改为 html 元素的 json 输出的不同名称。

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

【问题讨论】:

  • 不要通过连接字符串来创建 JSON。创建一个对象或数组,然后使用JSON.stringify() 将其转换为 JSON。
  • JSON 对象中属性的顺序无关紧要。
  • 谢谢@Barmar。如何更改 json 中的输入元素名称?

标签: javascript jquery arrays json for-loop


【解决方案1】:

使用一个数组来指定输入 ID 和 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);

【讨论】:

    最近更新 更多