当前位置:首页 > VUE

vue实现班级随机分组

2026-02-23 08:55:28VUE

实现思路

使用 Vue 实现班级随机分组,可以通过以下步骤完成。假设班级成员数据存储在数组中,随机分组算法将打乱数组顺序并按照指定每组人数进行分割。

数据准备

定义一个数组存储班级成员信息,每个成员可以是字符串或对象形式。例如:

vue实现班级随机分组

data() {
  return {
    students: ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十'],
    groupSize: 2,
    groups: []
  }
}

随机分组方法

编写一个方法实现随机分组逻辑。使用 Fisher-Yates 算法打乱数组顺序,然后按照指定组大小分割数组。

methods: {
  shuffleArray(array) {
    const shuffled = [...array];
    for (let i = shuffled.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
    }
    return shuffled;
  },

  randomizeGroups() {
    const shuffled = this.shuffleArray(this.students);
    this.groups = [];
    for (let i = 0; i < shuffled.length; i += this.groupSize) {
      this.groups.push(shuffled.slice(i, i + this.groupSize));
    }
  }
}

模板展示

在模板中展示分组结果,可以使用 v-for 循环渲染各组及其成员。

vue实现班级随机分组

<template>
  <div>
    <button @click="randomizeGroups">随机分组</button>
    <div v-for="(group, index) in groups" :key="index">
      <h3>第 {{ index + 1 }} 组</h3>
      <ul>
        <li v-for="(student, studentIndex) in group" :key="studentIndex">
          {{ student }}
        </li>
      </ul>
    </div>
  </div>
</template>

完整组件代码

将以上部分组合成一个完整的 Vue 组件。

<template>
  <div>
    <button @click="randomizeGroups">随机分组</button>
    <div v-for="(group, index) in groups" :key="index">
      <h3>第 {{ index + 1 }} 组</h3>
      <ul>
        <li v-for="(student, studentIndex) in group" :key="studentIndex">
          {{ student }}
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      students: ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十'],
      groupSize: 2,
      groups: []
    }
  },
  methods: {
    shuffleArray(array) {
      const shuffled = [...array];
      for (let i = shuffled.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
      }
      return shuffled;
    },
    randomizeGroups() {
      const shuffled = this.shuffleArray(this.students);
      this.groups = [];
      for (let i = 0; i < shuffled.length; i += this.groupSize) {
        this.groups.push(shuffled.slice(i, i + this.groupSize));
      }
    }
  }
}
</script>

<style scoped>
ul {
  list-style-type: none;
  padding: 0;
}
</style>

扩展功能

如果需要更复杂的功能,比如指定组数而非每组人数,可以调整分组逻辑。例如:

randomizeGroupsByGroupCount(groupCount) {
  const shuffled = this.shuffleArray(this.students);
  this.groups = Array.from({ length: groupCount }, () => []);
  shuffled.forEach((student, index) => {
    this.groups[index % groupCount].push(student);
  });
}

调用时传入希望分成的组数即可。

标签: 班级vue
分享给朋友:

相关文章

vue实现增删改

vue实现增删改

Vue 实现增删改查功能 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是使用 Vue.js 实现增删改查(CRUD)功能的方法。 数据初始化 在 Vue 实例的 data 中初始化一个…

vue实现高亮

vue实现高亮

Vue 实现文本高亮的方法 在 Vue 中实现文本高亮可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-html 指令 通过 v-html 指令可以动态插入 HTML 内容,将需要高…

vue实现模块

vue实现模块

Vue 实现模块化的方法 Vue 支持多种模块化开发方式,可以根据项目需求选择适合的方案。 使用单文件组件(SFC) 单文件组件是 Vue 最常用的模块化方式,将模板、脚本和样式封装在一个 .vue…

vue实现driver

vue实现driver

Vue 实现 Driver.js 引导功能 Driver.js 是一个轻量级的 JavaScript 库,用于在网页上创建引导式导览。以下是在 Vue 项目中集成 Driver.js 的详细方法:…

vue实现gps

vue实现gps

Vue 中实现 GPS 定位功能 在 Vue 中实现 GPS 定位功能通常依赖于浏览器的 Geolocation API 或第三方地图服务(如高德、百度地图等)。以下是两种常见的实现方式: 使用浏览…

vue实现微云

vue实现微云

Vue 实现微云功能 使用 Vue 实现类似微云的网盘功能需要结合前端框架、后端存储及文件处理技术。以下是关键实现步骤和代码示例: 前端框架搭建 使用 Vue CLI 创建项目基础结构,安装必要依赖…