Javascript 如果密钥已经存在,如何创建对象的json数组

Javascript 如果密钥已经存在,如何创建对象的json数组,javascript,jquery,json,Javascript,Jquery,Json,我是JavaScript和查询的初学者。我有一个html表单,用户可以在其中添加或删除一组字段。该字段组包含1个选择和3个输入。添加的字段组与以前的字段名称相同,依此类推。 我试图做的是检索值,创建一个这样的结构 { "colture1": [{ "code_app": "A2", "long": "1", "lat": "103" }, { "code_app": "B34", "long": "1

我是JavaScript和查询的初学者。我有一个html表单,用户可以在其中添加或删除一组字段。该字段组包含1个选择和3个输入。添加的字段组与以前的字段名称相同,依此类推。 我试图做的是检索值,创建一个这样的结构

{
    "colture1": [{
        "code_app": "A2",
        "long": "1",
        "lat": "103"
    }, {
        "code_app": "B34",
        "long": "11",
        "lat": "12"
    }],
    "colture2": [{
        "code_app": "GH3456",
        "long": "55",
        "lat": "90"
    }]
    // ....and so on
}
如果用户选择了一个已经存在于对象中的colture,我想在“colture1”中看到的同一个键中添加其他值。我的问题是,我无法创建一个可以添加其他值的数组,现在我的函数覆盖了以前的值,它写入了最后一个值,而不创建数组

这是我的职责

$('#create_json').on("click", function(e) {

  const json_data = {};
  var cat = "";
  for (const input of document.querySelectorAll(".card[mainBlock] select, .card[mainBlock] input")) {
    if (input.tagName === 'SELECT') {
      cat = input.value;
    } else {
      (json_data[cat] = json_data[cat] || {})[input.name] = input.value;
    }
  }
  console.log(JSON.stringify(json_data));
})

这里我可以放一个演示。提前感谢您

如果您在每个外部循环迭代中处理一个部分(仅在
.card[mainBlock]
上),然后使用内部循环处理类别和属性,可能会更容易:

$('#create_json').on("click", function (e) { 
    const data = {};
    for (const section of document.querySelectorAll(".card[mainBlock]")) {
        const cat = section.querySelector("select").value;
        const obj = Object.assign(...Array.from(section.querySelectorAll("input"), input =>
            ({ [input.name]: input.value })
        ));
        (data[cat] = data[cat] || []).push(obj);
    }
    console.log(JSON.stringify(data));
});
我不会调用您的主变量
json\u data
。它不表示JSON,而是一个JavaScript对象。JSON是通过调用
JSON.stringify
得到的