Javascript 如何获取与数组具有相同名称标记的所有输入字段(jQuery)

Javascript 如何获取与数组具有相同名称标记的所有输入字段(jQuery),javascript,jquery,arrays,dictionary,Javascript,Jquery,Arrays,Dictionary,是否可以获取与数组具有相同名称标记的所有输入字段,并使用方括号中的字符串作为键? 例如: ' 结果应该是这样的: hidden => "idPub" => 123, "idPri" => 321, "description" => 'test' 我的实际解决方案: var formData = []; $("input[name^='hidden[']").each(function() {

是否可以获取与数组具有相同名称标记的所有输入字段,并使用方括号中的字符串作为键? 例如:


'
结果应该是这样的:

hidden => 
    "idPub" => 123,
    "idPri" => 321,
    "description" => 'test'
我的实际解决方案:

var formData = [];
        $("input[name^='hidden[']").each(function()
        {
            formData[$(this).attr('name').replace('hidden[','').replace(']', '')] = $(this).val();
        });

提前感谢。

因为您使用的是命名键,
formData
应该是对象,而不是数组

const formData = {};

const elements = Array.from(document.querySelectorAll("input[type=hidden]"));

elements.forEach(el => {
    const key = el.getAttribute('name');
    var matches = key.match(/\[(.*?)\]/);

  if (matches) {
    var val = matches[1];
    formData[val] = el.value;
  }
});

console.log(formData);
var formData = {};
//             ^^
此外,选择器仅针对
元素;您还需要为
添加选择器

$("input[name^='hidden['],textarea[name^='hidden[']")
//                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
var formData={};
$(“输入[name^='hidden['],文本区域[name^='hidden['])。每个(函数(){
formData[$(this.attr('name').replace('hidden[','').replace(']','')]=$(this.val();
});
console.log(formData);


测试
您也可以使用正则表达式来完成此操作

var hidden = {};
$('input,textarea').filter(function(){
  return this.name.match(/(hidden)\[(.*?)\]/g);
}).each(function() {
  hidden[$(this).attr('name').replace('hidden[', '').replace(']', '')] = $(this).val();
});

console.log(hidden);

请在此处查看:

html中123和321在哪里?您可以选择以属性开头的元素,如
input[name^=“hidden”]
选择名称以hidden开头的所有输入。