JS基础第九天——对象(2)+Random

目录

遍历对象

操作:

解释:

渲染学生信息表案例

内置对象

[ceil天花板,向上取整;floor地板,向下取整;round 四舍五入](#ceil天花板,向上取整;floor地板,向下取整;round 四舍五入)

[max最大值; min最小值;abs绝对值](#max最大值; min最小值;abs绝对值)

Random

使用场景:数组中随机抽取

案例一:随机点名+不重复

案例二:猜数游戏

进阶版+开关的使用

基本数据类型与引用数据类型

遍历对象

目标:遍历输出对象中的所有元素

因为对象无序,无索引号,故而不能使用for循环(1.确定长度:arr.length;2.规律下标,确定元素)

操作:

(需要自己多练习几遍)

复制代码
<script>
    // for in :不推荐遍历数组
    let arr = ['red', 'blue', 'grey', 'glod']
    for (let k in arr) {
      console.log(k)//打印数组索引号,但为字符串型(这是不使用他作为遍历数组格式的原因)
      console.log(arr[k])
    }
    // 遍历对象的使用方法...........................................
    // 1.遍历对象 for in
    let obj = {
      uname: '张三',
      age: 28,
      gender: '男'
    }
    // 2.遍历对象
    for (let k in obj) {
      console.log(k)//属性名'uname' 'age' ===k
      console.log(obj[k])//tip:!!!输出属性值 obj[k]
    }
  </script>

解释:

由于k是变量,所以必须用[ ]解析

tip:k是获得对象的属性名,对象名[k]是获得属性值

渲染学生信息表案例

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    table {
      width: 600px;
      text-align: center;
    }

    caption {
      font-size: 18px;
      font-weight: 700;
      margin-bottom: 10px;
    }

    /* 对行列和表格边框设定 */
    table,
    th,
    td {
      border: 1px solid #ccc;
      border-collapse: collapse;
    }

    tr {
      height: 40px;
      cursor: pointer;
    }

    table tr:nth-child(1) {
      background-color: #ddd;
    }

    table tr:not(:first-child):hover {
      background-color: #eee;
    }
  </style>
</head>

<body>
  <h2>学生信息</h2>
  <p>渲染</p>

  <table>
    <caption>学生手册</caption>
    <!-- table居中,caption在table中 -->
    <tr>
      <th>序号</th>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
      <th>家乡</th>
    </tr>
    <script>
      // 渲染
      // 1.信息罗列
      let students = [
        { name: '小红', age: 18, gender: '女', hometown: '河南' },
        { name: '小吕', age: 18, gender: '男', hometown: '河北' },
        { name: '小强', age: 19, gender: '男', hometown: '江西' },
        { name: '小南', age: 18, gender: '女', hometown: '湖南' },
        { name: '小赵', age: 17, gender: '男', hometown: '天津' },
      ]
      //2.遍历对象数组
      // 记得定义i
      // 不要拼写错误
      for (let i = 0; i < students.length; i++) {
        document.write(`   
        <tr>
        <td>${i + 1}</td>
        <td>${students[i].name}</td>
        <td>${students[i].age}</td>
        <td>${students[i].gender}</td>
        <td>${students[i].hometown}</td>
        </tr> 
    `)
      }

    </script>
  </table>

</body>

</html>

内置对象

定义:已经规定好的东西

内置对象Math:

格式:

console.log(Math.**(...))

ceil天花板,向上取整;floor地板,向下取整;round 四舍五入

复制代码
<script>
    // 属性
    console.log(Math.PI)
    // 方法
    // ceil天花板,向上取整,不满一加一
    console.log(Math.ceil(1.1))//2
    console.log(Math.ceil(2.3))//3
    console.log(Math.ceil(9.3))//10
    // floor地板,向下取整
    console.log(Math.floor(6.3))//6
    console.log(Math.floor(7.9))//7
    // round 四舍五入
    console.log(Math.round(6.3))//6
    console.log(Math.round(4.8))//5
    console.log(Math.round(-5.49))//-4
  </script>

与函数有相似之处

取整函数:parseInt(1.3)//1 parseInt('18px')//18(更厉害,可以将字符串转化为数字)

max最大值; min最小值;abs绝对值

复制代码
<script>
    // max最大值
    console.log(Math.max(1, 9, 28, 3))//28
    // min最小值
    console.log(Math.min(1, 9, 28, 3))//1
    // abs绝对值
    console.log(Math.abs(-89))//89
  </script>

微复习

  • 声明语法:let 对象名={}
  • 属性名:属性名:属性值('字符串'/数字...),(用逗号分隔)
  • 使用时访问:1. console.log(对象名.属性值) 2.console.log(对象名['属性值']) // 输出属性值
  • 增删减查
  • null类似于let obj={ } 空对象

Random

复制代码
  <script>
    // 取值范围[0,1)随机数(不常用)编写取值范围的基础
    console.log(Math.random())
    //常用...............取值范围↓[0,n]
    Math.floor(Math.random() * (n + 1))
    //floor向下取整(不要小数)
    // .......................取值范围[m,n]
    Math.floor(Math.random() * (n - m + 1)) + m
    </script>

<script>
    // eg:
    function getRandom(m, n) {
      return Math.floor(Math.random() * 34) + 6
    }
    console.log(getRandom(6, 39));
  </script>

使用场景:数组中随机抽取

复制代码
<script>
    // 随机抽取数组元素 固定写法
    let arr = ['red', 'glod', 'green', ' pink']//不要忘了字符串:'元素'
    let random = Math.floor(Math.random() * arr.length)
    console.log(arr[random])
  </script>

案例一:随机点名+不重复

复制代码
<script>
      // 随机点名
      let arr = ['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']
      let random = Math.floor(Math.random() * arr.length)
      document.write(arr[random])
      //随机点名且不重复-删除出现过的元素 splice(起始位置(下标),删除几个元素)
      arr.splice(random, 1)
      console.log(arr)
      // 现在做不了抽一个删一个的页面效果,但可以在检查的后台看到数组确实在删除
    </script>

案例二:猜数游戏

复制代码
<script>
    // 1.随机生成数字
    function getNumber(m, n) {
      return Math.floor(Math.random() * (n - m + 1)) + m
    }
    let random = getNumber(1, 10)
    document.write(random)
    // 直到猜对为止,需要不断地循环
    // (补充说明:for,已知需要循环几次;while,无限制循环次数)
    while (true) {
      // 2.用户输入
      let guess = +prompt('请在1-10之间猜一个数')
      // 3.判断输出
      if (guess < random) {
        alert('哈哈,猜小了')
      }
      else if (guess > random) {
        alert('哈哈,猜大了')
      }
      else {
        alert('恭喜你,猜对了')
        break// 注意退出循环所在的位置 退出循环 tip循环写法
      }
    }
  </script>

进阶版+开关的使用

复制代码
<script>
    function getNumber(m, n) {
      return Math.floor(Math.random() * (n - m + 1)) + m
    }
    let random = getNumber(1, 10)
    document.write(random)

    let flag = true//设置开关
    // 设置循环(有固定次数)
    for (let i = 1; i <= 3; i++) {
      // 用户输入
      // 用户输入
      let guess = +prompt('请在1-10之间猜一个数')
      if (guess < random) {
        alert('猜小了,再来')
      }
      else if (guess > random) {
        alert('猜大了,再来')
      }
      else {
        flag = false//如果次数用完前答对,结束开关,不再提示次数用完
        alert('猜对了')
        break//退出循环      
      }
    }
    // 开关在循环之外,循环结束则提示
    if (flag) {
      alert('次数已用完')
    }

  </script>

基本数据类型与引用数据类型

↓ ↓

简单数据类型 复杂数据类型

↓ ↓

栈:存储值 堆:存储地址

(为API做引入)

相关推荐
测试人社区-小明5 小时前
从前端体验到后端架构:Airbnb全栈SDET面试深度解析
前端·网络·人工智能·面试·职场和发展·架构·自动化
李少兄5 小时前
前端开发中的 transform、translate 与 transition
前端·css
tang&5 小时前
Qt 基础教程:从初识到信号槽机制
开发语言·qt
全栈练习生5 小时前
ESModule的工作原理是什么
前端
爱看书的小沐5 小时前
【小沐学WebGIS】基于Three.JS绘制二三维地图地球晨昏效果(WebGL / vue / react )
javascript·vue.js·gis·webgl·three.js·opengl·晨昏线
李绍熹5 小时前
C语言数组与指针示例
c语言·开发语言
William数据分析5 小时前
JavaScript 语法零基础入门:从变量到异步(附 Python 语法对比)
开发语言·javascript·python
coderxiaohan5 小时前
【C++】无序容器unordered_set和unordered_map的使用
开发语言·c++
疯狂的沙粒5 小时前
Vue 前端大屏做多端屏幕适配时,如何让其自动适配多种不同尺寸的屏幕?
前端·javascript·vue.js