当前位置:首页 > VUE

vue实现随机分组功能

2026-02-22 19:34:31VUE

实现随机分组功能

在Vue中实现随机分组功能可以通过以下步骤完成。假设需要将一组人员随机分成若干小组。

数据准备 定义一个人员数组和分组数量:

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

随机排序算法 使用Fisher-Yates洗牌算法实现随机排序:

vue实现随机分组功能

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

分组实现 将随机排序后的人员分配到各小组:

methods: {
  randomGroup() {
    const shuffled = this.shuffleArray(this.people)
    this.groups = Array.from({ length: this.groupCount }, () => [])

    shuffled.forEach((person, index) => {
      const groupIndex = index % this.groupCount
      this.groups[groupIndex].push(person)
    })
  }
}

模板展示 在模板中显示分组结果:

vue实现随机分组功能

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

进阶功能实现

控制每组人数 如果需要每组人数相同或指定人数:

methods: {
  randomGroupWithSize() {
    const shuffled = this.shuffleArray(this.people)
    const groupSize = Math.ceil(this.people.length / this.groupCount)
    this.groups = []

    for (let i = 0; i < this.groupCount; i++) {
      this.groups.push(shuffled.slice(i * groupSize, (i + 1) * groupSize))
    }
  }
}

保存分组历史 添加分组历史记录功能:

data() {
  return {
    history: []
  }
},
methods: {
  randomGroup() {
    // ...原有分组代码
    this.history.push([...this.groups])
  }
}

注意事项

  • 随机性依赖Math.random(),不适合高安全性场景
  • 人员数量不足时会自动调整分组数量
  • 使用v-for时需要添加合适的key
  • 移动端可能需要调整UI显示方式

以上实现可以根据实际需求进行调整,如添加分组条件限制、保存分组结果等功能。

标签: 功能vue
分享给朋友:

相关文章

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…

实现vue datepicker

实现vue datepicker

安装依赖 使用 vue-datepicker 或第三方库如 v-calendar 或 vue2-datepicker。以 vue2-datepicker 为例: npm install vue2…

vue nexttrick实现

vue nexttrick实现

Vue 中 nextTick 的实现原理 nextTick 是 Vue 提供的一个异步方法,用于在下次 DOM 更新循环结束之后执行延迟回调。它利用了 JavaScript 的事件循环机制,确保回调在…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…

vue实现下拉实现

vue实现下拉实现

Vue 实现下拉菜单的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和 v-show 指令可以快速实现下拉菜单。定义一个布尔值控制下拉菜单的显示与隐藏,点击按钮切换状态…

vue实现部门树

vue实现部门树

Vue 实现部门树的方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方式。通过组件自身调用自身,可以轻松构建多层级的部门树。 <template> <d…