JavaScript学习 — 数组分组案例

本文探讨了如何使用JavaScript的for循环对数组进行分组操作,并介绍了利用for循环实现抽奖功能的基本思路,是JavaScript学习者提升技能的好资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用for循环对数组进行分组

<script>
    // 存放所有人的姓名
    let names = new Array();
    // 模拟人名
    for (let index = 0; index < 34; index++) {
        if (index < 9) {
            names[index] = `user0${index + 1}`;
        } else {
            names[index] = `user${index + 1}`;
        }
    }
    // 每组人数
    let personCount = 5;
    // 确定分组数量 向上取整
    let count = Math.ceil(names.length / personCount);
    // 二维数组 存储分组信息
    let groups = new Array();
    // 方式一 两层循环
    for (let index = 0; index < count; index++) {
        // 一维数组 存储 每个组的组员名字
        let group = new Array();
        // 外层循环 按照组的数量循环 每循环一次分一个组
        if (personCount < names.length) {
            // 如果每组人数小于数组长度 那么就随机分
            for (let index = 0; index < personCount; index++) {
                // 为该组随机分配组员 随机下标 注意 从原数组中随机的元素需要从原数组中删除 避免某员工被重新分配
                group.push(names.splice(Math.floor(Math.random() * names.length), 1)[0]);
            }
            // 将每组的人员姓名 存储到二维数组中
            groups.push(group);
        } else {
            if (names.length < groups.length) {
                // 如果剩余人数 不大于 小组数量 将剩余人数平均或随机为每一个分组分配一名组员
                // 未分组人数
                let len = names.length;
                for (let j = 0; j < len; j++) {
                    groups[j].push(names.splice(0, 1)[0]);
                }
            } else {
                // 如果每组人数小于数组长度 并且 剩余人数 大于小组数量 那么我们将剩余人数单独分成一组
                groups.push(names);
            }

        }
    }
    console.log(groups);
</script>

在这里插入图片描述

使用for循环模拟抽奖

<script>
    // 公司有33名员工 年会抽奖 其中三等奖3名 二等2名 一等奖1名 注意:员工不可重复获奖
    // 存放所有人的姓名
    let names = new Array();
    // 模拟人名
    for (let index = 0; index < 33; index++) {
        if (index < 9) {
            names[index] = `user0${index + 1}`;
        } else {
            names[index] = `user${index + 1}`;
        }
    }
    // 三等奖3名循环输出
    for (let index = 0; index < 3; index++) {
        document.writeln('三等奖 >>> ' + names.splice(Math.floor(Math.random() * names.length), 1)[0] + '<br>');
    }
    // 二等奖2名循环输出
    for (let index = 0; index < 2; index++) {
        document.writeln('二等奖 >>> ' + names.splice(Math.floor(Math.random() * names.length), 1)[0] + '<br>');
    }
    // 一等奖1名直接输出
    document.writeln('一等奖 >>> ' + names.splice(Math.floor(Math.random() * names.length), 1)[0] + '<br>');
</script>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenlei...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值