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

如何用jQuery动态创建名为groups的指定结构对象数组?

实现动态创建groups对象数组的方案

看起来你已经握了核心方法,我直接给你梳理完整的实现思路和代码示例,完全贴合你的需求:

假设你的HTML结构参考

先模拟一个常见的结构(你可以根据自己的实际DOM结构调整选择器):

<!-- 每个带ID的容器就是一个组 -->
<div id="group1" class="group">
  <!-- 每组内的属性项:左边是属性名,右边是属性值 -->
  <div class="attr-name">成员数量</div>
  <div class="attr-value">5</div>
  
  <div class="attr-name">组类型</div>
  <div class="attr-value">项目协作</div>
</div>

<div id="group2" class="group">
  <div class="attr-name">成员数量</div>
  <div class="attr-value">3</div>
  
  <div class="attr-name">组类型</div>
  <div class="attr-value">兴趣交流</div>
  
  <div class="attr-name">创建时间</div>
  <div class="attr-value">2024-01-15</div>
</div>

jQuery实现代码

// 初始化空数组
const groups = [];

// 遍历所有组容器(这里用.group类选择,你可以换成自己的选择器)
$('.group').each(function() {
  // 获取当前组的名称(即元素ID)
  const groupName = $(this).attr('id');
  // 初始化当前组的属性对象
  const groupObj = {};
  
  // 遍历当前组内的所有属性名元素(这里按“属性名+相邻属性值”的结构处理)
  $(this).find('.attr-name').each(function() {
    // 获取属性名,用trim()去除前后冗余空格
    const attrKey = $(this).text().trim();
    // 获取对应的属性值(这里假设属性值是当前元素的下一个兄弟元素)
    const attrValue = $(this).next('.attr-value').text().trim();
    
    // 把键值对添加到组对象中
    groupObj[attrKey] = attrValue;
  });
  
  // 将组装好的组对象添加到groups数组
  groups.push({ [groupName]: groupObj });
});

// 测试输出,验证结果是否符合预期
console.log(groups);

关键细节说明

  • 选择器灵活调整:如果你的DOM结构和示例不同(比如属性名和属性值包裹在同一个容器里),只需要修改内部的选择逻辑即可,核心还是用.each()遍历、.attr('id')获取组名、.text()提取文本内容。
  • 文本冗余处理:添加.trim()是为了避免文本前后的空格或换行干扰属性的键值对,如果你不需要可以直接去掉。
  • 动态属性名实现:用{ [groupName]: groupObj }这种ES6计算属性名语法,直接把元素ID作为对象的键,完美匹配你“以ID为组名称”的需求。

如果你的实际DOM结构有特殊情况,比如属性项的嵌套逻辑不一样,可以随时告诉我具体结构,我再帮你调整代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:28:51