You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中获取HTML多维数组输入的键值信息?

获取表单多维数组的键值对信息

问题场景

现有如下HTML输入控件:

<input name="accessoires[123][]" min="0" max="99" type="number" value="0">

<input name="accessoires[456][]" min="0" max="99" type="number" value="0">

<input name="accessoires[789][]" min="0" max="99" type="number" value="0">

目前使用以下代码只能获取输入框的value值,无法提取name属性中的ID(如123、456):

var accessoires = $("input[name*='accessoires']")
        .map(function(){return $(this).val();}).get();

解决方案

可以通过正则表达式匹配name属性中的ID部分,同时结合value值构建完整的键值信息,有两种常见的结构可选:

1. 返回包含ID和value的对象数组

var accessoires = $("input[name*='accessoires']").map(function() {
    // 匹配name中的数字ID
    var idMatch = this.name.match(/accessoires\[(\d+)\]\[\]/);
    if (idMatch) {
        return {
            accessoiresItemId: idMatch[1],
            value: $(this).val()
        };
    }
}).get();

// 输出示例:
// [
//   { accessoiresItemId: "123", value: "0" },
//   { accessoiresItemId: "456", value: "0" },
//   { accessoiresItemId: "789", value: "0" }
// ]

2. 返回以ID为键、value为值的对象

如果需要更直接的键值映射,可以用each遍历构建对象:

var accessoiresObj = {};
$("input[name*='accessoires']").each(function() {
    var idMatch = this.name.match(/accessoires\[(\d+)\]\[\]/);
    if (idMatch) {
        accessoiresObj[idMatch[1]] = $(this).val();
    }
});

// 输出示例:
// { "123": "0", "456": "0", "789": "0" }

说明

正则表达式/accessoires\[(\d+)\]\[\]/的作用是精准匹配name属性中的数字ID:

  • accessoires\[ 匹配固定前缀accessoires[
  • (\d+) 捕获连续的数字(即目标ID)
  • \]\[\] 匹配后缀][]

内容的提问来源于stack exchange,提问作者Supptech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:34:57