当前位置: 首页 > news >正文

Vue 3 中按照某个字段将数组分成多个数组

方法一:使用 reduce 方法

const originalArray = [
  { id: 1, category: 'A', name: 'Item 1' },
  { id: 2, category: 'B', name: 'Item 2' },
  { id: 3, category: 'A', name: 'Item 3' },
  { id: 4, category: 'C', name: 'Item 4' },
  { id: 5, category: 'B', name: 'Item 5' },
];

const groupedByCategory = originalArray.reduce((acc, item) => {
  const key = item.category;
  if (!acc[key]) {
    acc[key] = [];
  }
  acc[key].push(item);
  return acc;
}, {});

// 结果是一个对象,键是分类,值是该分类下的数组
console.log(groupedByCategory);

方法二:使用 lodash 的 groupBy 方法

如果你项目中使用了 lodash,可以使用它的 groupBy 方法:

import { groupBy } from 'lodash';

const groupedByCategory = groupBy(originalArray, 'category');
console.log(groupedByCategory);

方法三:在 Vue 3 组件中使用计算属性

import { computed } from 'vue';

export default {
  setup() {
    const originalArray = [
      { id: 1, category: 'A', name: 'Item 1' },
      { id: 2, category: 'B', name: 'Item 2' },
      // ...其他数据
    ];

    const groupedByCategory = computed(() => {
      return originalArray.reduce((acc, item) => {
        const key = item.category;
        if (!acc[key]) {
          acc[key] = [];
        }
        acc[key].push(item);
        return acc;
      }, {});
    });

    return {
      groupedByCategory
    };
  }
};

方法四:转换为数组的数组形式

const groupedArray = Object.values(
  originalArray.reduce((acc, item) => {
    const key = item.category;
    if (!acc[key]) {
      acc[key] = [];
    }
    acc[key].push(item);
    return acc;
  }, {})
);

console.log(groupedArray);
// 输出: [
//   [{ id: 1, category: 'A', name: 'Item 1' }, { id: 3, category: 'A', name: 'Item 3' }],
//   [{ id: 2, category: 'B', name: 'Item 2' }, { id: 5, category: 'B', name: 'Item 5' }],
//   [{ id: 4, category: 'C', name: 'Item 4' }]
// ]

在模板中使用

<template>
  <div v-for="(group, category) in groupedByCategory" :key="category">
    <h3>Category: {{ category }}</h3>
    <ul>
      <li v-for="item in group" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

相关文章:

  • wordpress一键建站百度推广登录入口下载
  • 图做的好的网站平台推广公众平台营销
  • 做ppt比较好的网站有哪些网络营销策略分析
  • 晋中建设机械网站seo关键词优化软件怎么样
  • 建设网站前的市场分析包括哪些内容推广引流方法与渠道
  • 一诺网站建设百度推广怎么收费的
  • duckdb、PG、Faiss和Milvus调研与对比
  • 液态神经网络技术指南
  • C语言实现简单的控制台贪吃蛇游戏精讲
  • PowerBI中常用的时间智能函数
  • 【Linux】命令和权限
  • RHCSA Linux 系统删除文件
  • 编译出来的kernel功能与.config一致还是 defconfig一致
  • ASM1042A型CANFD芯片通信可靠性研究
  • Mysql篇(三):SQL优化经验全方位解析
  • 算法设计学习7
  • 【Axure元件分享】年月日范围选择器
  • 使用MQTTX软件连接阿里云
  • 基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)
  • 装饰器(Decorator) 装饰器作用
  • grep 命令详解(通俗版)
  • AQUA爱克泳池设备入驻济南校园,以品质筑牢游泳教育安全防线
  • C# System.Text.Json 中 JsonNamingPolicy 使用详解
  • ue5 仿鬼泣5魂类游戏角色和敌人没有碰撞
  • Opencv计算机视觉编程攻略-第八节 检测兴趣点
  • linux 安装 mysql记录