Javascript 如果密钥已经存在,如何创建对象的json数组
我是JavaScript和查询的初学者。我有一个html表单,用户可以在其中添加或删除一组字段。该字段组包含1个选择和3个输入。添加的字段组与以前的字段名称相同,依此类推。 我试图做的是检索值,创建一个这样的结构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
{
"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
得到的