谈遍历对象与随机数思路与理解

153 阅读3分钟
摘要:在学习对象与遍历对象之前,对于复杂类型遍历的数据处理一直很麻烦,直到知晓对象与遍历对象的用法后才豁然开朗,学习就是这样,在学习较浅显的知识时要多多考虑扩展用法,在了解更高深的知识后才能恍然大悟。

关键字:对象、遍历对象

一、对象

一种无序的复合数据的集合,适用于多数据处理

  <script>
    let 对象名 = {
      属性名:属性值,
      方法名:函数
    }
  </script>

我的理解是,在js中,几乎所有的事物都是对象,为了便于书写和理解以及学习,细化了单个数据的变量,独立称为简易数据,旨在与容纳多个数据的变量区分。而对象也是一个变量,区别在于可以包含多个值(变量),所有,对象是变量或键值的容器。

对象可以以独立单位存在于数组,从数据操作的角度来说更加的方便迅捷,降低了数据维护成本,其特殊性使其不同于其他基本数据类型。值得注意的是用 typeof null 会返回 Object,这实际上是一个bug,Null 实际上是基本类型的值。

    <script>
      let student = [
        { name: '小明', age: 18, sex: 'male', hometown: '河北' },
        { name: '小红', age: 19, sex: 'female', hometown: '河南' },
        { name: '小刚', age: 17, sex: 'male', hometown: '山西' },
        { name: '小丽', age: 18, sex: 'female', hometown: '山东' }
      ]
    </script>

二、遍历对象

有时候我们需要依次调用对象内的每一个值,在此引入一个for in语法;for in语法中的 key 是一个变量, 在循环的过程中依次代表对象的属性名

  <script>
    let obj = {
      uname: 'YWQ',
      age: 21,
      sex: 'male'
    }
    for (let key in obj) {
      console.log(obj[key]);
    }
  </script>

由于 key 是变量, 所以必须使用 [ ] 语法解析

三、生成x-y之间的随机整数

思路:主要调用了js封装好的数学方法“Math.random”生成的随机数作为数字基础

1、数学方法“Math.random”为0-1之间的浮点数,包括0但不包括1;而需求是取整数

2、在数学方法“Math.random”给予的随机浮点数的基础上,在此调用第二个数学方法“Math.floor”对随机生成的浮点数进行向下取整,借此获得整数

3、若要把取值区间定在x-y之间,需要先确定x与y的差,然后再加上x。后者的目的是舍弃0-x之间的取值区间,而前者的目的则是舍弃值后确定x-y的范围;最后再+1,这个操作的目的是因为,我们使用的是数学方法“Math.floor”来进行取整,而它是向下取整,若不加上1,最终取值区间将会比目标区间的后者1

4、为什么不用数学方法“Math.ceil”?若是“Math.floor”用来向下取整,那么理论上“Math.ceil”向上取整也是可行的,在某些情况下,它甚至比向下取整更好用,但它有个致命的缺陷--无法获取整数“0”(除非“Math.random”给予的随机浮点数为0),而若是“Math.floor”在进行+1操作后,就能够做到所有整数的取值需求;换言之,只要0不在取值范围内,那么可以在不进行“+1操作”的情况下使用“Math.ceil”进行随机取整;但是来回的切换多个方法无疑会使这个简易随机取整公式变得繁琐,最后,为了避免这个随公式太过繁琐和复杂以及减小代码错误带来更小的容错率,在这里统一使用“Math.floor”进行向下取整

    function getRandom(x = 0, y = 0) {
      let random = Math.floor(Math.random() * (y - x + 1) + x)
      return random
    }