JavaScript练习之仿 siri 项⽬

题目要求:实现求和、获取时间、笑话、抽奖四个功能,当⽤户使⽤完⼀个功能后,继续提示⽤户使⽤该程序,当⽤户点击取消或者输⼊q的时候退出程序(退出循环)

1、建造框架

let running = true;
while (running) {
let msg = prompt('您好,我是您的私⼈助理 siri \n' +
'请输⼊编号或《关键词》选择功能,按q退出 \n' +
'1. 计算《总和》\n' +
'2. 获取《时间》\n' +
'3. 讲个《笑话》\n' +
'4. 来个《抽奖》'
);
switch (msg) {
case '1':
case '总和':
console.log('计算总和');
break;
case '2':
case '时间':
console.log('获取当前时间');
break;
case '3':
case '笑话':
console.log('随机讲笑话');
break;
case '4':
case '抽奖':
console.log('随机抽奖');
break;
case 'q':
case null:
running = false;
break;
default:
console.log('您说什么,我听不太懂');
break;
}
}

再分别实现各自的功能

2、求和

要实现这种⽅式,⾸先要解决的问题是把⽤户输⼊的 "1,2,3,4,5,6" 使⽤ , 切割成数组。
JavaScript 中提供了⼀个分割字符串的⽅法:let arr = 字符串.split(分隔符);

 let str = prompt('输入数字,用逗号分隔,如“1,2,3,4”');
                    //以逗号为分割线,取数字存到数组中
                    let arr = str.split(',');
                    let sum = 0;
                    for (let i = 0; i < arr.length; i++) {
                        //将字符串的数字进行转化,防止数字求和变成字符串拼接
                        sum += parseFloat(arr[i]);
                    }
                    alert('求和的结果是:' + sum);

3、时间

当⽤户输⼊ 2 时,要获取当前的⽇期和时间,格式为:2021-10-24 12:00:00
在 JavaScript 中要获取系统当前的时间,需要使⽤到 JavaScript 提供的 Date ⽇期对象。

let date = new Date();
                    let year = date.getFullYear();
                    let month = date.getMonth() + 1;//月份是从0开始的
                    let day = date.getDate();
                    let hour = date.getHours();
                    let minute = date.getMinutes();
                    let second = date.getSeconds();
                    //不够两位前面补0
                    month = month > 10 ? month : '0' + month;
                    hour = hour > 10 ? hour : '0' + hour;
                    minute = minute > 10 ? minute : '0' + minute;
                    second = second > 10 ? second : '0' + second;

                    let time = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
                    alert(time);

4、笑话

随机⽣成笑话,我们需要准备⼀个数组存储所有的笑话,笑话数组有了之后,接下来需要随机⽣成数组中的⼀个索引值,索引值必须是合法范围 [0, jokes.length)。我们先来学习如何⽣成随机数字
这⾥需要⽤到 JavaScript 中提供的⽣成随机数的功能,Math.random(),⽣成的随机数范围是[0, 1)之间

随机⽣成指定整数范围的数字,⽣成的随机数*10,然后取整,范围是[0, 10)

let jokes = [
                        '每天把牢骚拿出来晒晒太阳,心情就不会缺钙',
                        '明明是傻,却说是逆向思维。',
                        '第八套广播体操,我练了三年了,什么时候能打通任督二脉啊。',
                        '“师傅,教我分身术吧。”“首先,你要有把电锯。。。”',
                        'a:你说我这穷日子过到啥时侯是个头啊?b:那得看你能活多久了。',
                        '每次看古装片听人说:愿闻其翔,都觉得怪怪的。。。',
                        '“我有一个看家本领。” “什么?” “看家。”',
                        '今天客户来银行取钱,坐下一句话说的我石化了:“你好,我死期到了。”',
                        '做人最失败的莫过于唐僧,身边的人不管是敌是友都想送你上西天。',
                        '那天在家发呆呢,突然飞来一只小鸟儿,撞窗户上了,我想:上帝在玩“愤怒的小鸟”吧,可是,不对碍…上帝觉得我是猪???'
                    ];
                    //Math.length 生成一个[0,1)之间的随机小数
                    let i = parseInt(Math.random() * jokes.length);
                    alert(jokes[i]);

5、抽奖

随机⽣成1/2/3/4/5/6,如果⽣成的是1提示中⼀等奖,2提示中⼆等奖,3提示中三等奖,其它值提示未中奖。

const idx = parseInt(Math.random() * 6 + 1)
switch (idx) {
case 1:
alert('恭喜您抽中⼀等奖,奖品请找⽼师领取');
break;
case 2:
alert('恭喜您抽中⼆等奖,奖品请找⽼师领取');
break;
case 3:
alert('恭喜您抽中三等奖,奖品请找⽼师领取');
break;
default:
alert('很遗憾您未抽中奖品');
break;
}

最后总代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>仿siri练习</title>
</head>

<body>
    <script>
        let flag = true;
        while (flag) {
            let input = prompt('您好,我是您的私人助理siri \n请输入标号或《关键词》选择功能,按q退出 \n1.计算《总和》 \n2.获取《时间》\n3.讲个《笑话》 \n4.来个《抽奖》');
            console.log(input);
            switch (input) {
                case '1':
                case '总和':
                    let str = prompt('输入数字,用逗号分隔,如“1,2,3,4”');
                    //以逗号为分割线,取数字存到数组中
                    let arr = str.split(',');
                    let sum = 0;
                    for (let i = 0; i < arr.length; i++) {
                        //将字符串的数字进行转化,防止数字求和变成字符串拼接
                        sum += parseFloat(arr[i]);
                    }
                    alert('求和的结果是:' + sum);
                    break;
                case '2':
                case '时间':
                    let date = new Date();
                    let year = date.getFullYear();
                    let month = date.getMonth() + 1;//月份是从0开始的
                    let day = date.getDate();
                    let hour = date.getHours();
                    let minute = date.getMinutes();
                    let second = date.getSeconds();
                    //不够两位前面补0
                    month = month > 10 ? month : '0' + month;
                    hour = hour > 10 ? hour : '0' + hour;
                    minute = minute > 10 ? minute : '0' + minute;
                    second = second > 10 ? second : '0' + second;

                    let time = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
                    alert(time);
                    break;
                case '3':
                case '笑话':
                    let jokes = [
                        '每天把牢骚拿出来晒晒太阳,心情就不会缺钙',
                        '明明是傻,却说是逆向思维。',
                        '第八套广播体操,我练了三年了,什么时候能打通任督二脉啊。',
                        '“师傅,教我分身术吧。”“首先,你要有把电锯。。。”',
                        'a:你说我这穷日子过到啥时侯是个头啊?b:那得看你能活多久了。',
                        '每次看古装片听人说:愿闻其翔,都觉得怪怪的。。。',
                        '“我有一个看家本领。” “什么?” “看家。”',
                        '今天客户来银行取钱,坐下一句话说的我石化了:“你好,我死期到了。”',
                        '做人最失败的莫过于唐僧,身边的人不管是敌是友都想送你上西天。',
                        '那天在家发呆呢,突然飞来一只小鸟儿,撞窗户上了,我想:上帝在玩“愤怒的小鸟”吧,可是,不对碍…上帝觉得我是猪???'
                    ];
                    //Math.length 生成一个[0,1)之间的随机小数
                    let i = parseInt(Math.random() * jokes.length);
                    alert(jokes[i]);
                    break;
                case '4':
                case '抽奖':
                    const idx = parseInt(Math.random() * 6 + 1)
                    switch (idx) {
                        case 1:
                            alert('恭喜您抽中⼀等奖,奖品请找⽼师领取');
                            break;
                        case 2:
                            alert('恭喜您抽中⼆等奖,奖品请找⽼师领取');
                            break;
                        case 3:
                            alert('恭喜您抽中三等奖,奖品请找⽼师领取');
                            break;
                        default:
                            alert('很遗憾您未抽中奖品');
                            break;
                    }
                case 'q':
                case null:
                    flag = false;
            }
        }

    </script>

</body>

</html>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喝可乐的monkey

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

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

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

打赏作者

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

抵扣说明:

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

余额充值