对象 , 数组 , 冒泡排序 , 选择排序 , 数据类型之间的区别 , 知识点

108 阅读6分钟

对象

对象是JS中的一种数据格式
对象在Js中的数据类型数据  一般被称为  引用数据类型(也有喜欢叫复杂数据类)


1.如何向变量中存储一个叫对象的数据呢?
(1).语法1: var obj = {键值对}
    键值对 -> key : value
    例如:var obj = {
                  a : 100,    (逗号间隔 )
                  b: 200,
                  c: 300
                }
    什么是键值对(以上面为例)
      在obj对象中, a 为 key , 100为对应的value
      另一种说法: a 为键, 100 为对应的 值
      另一种说法: a 为属性名, 100 为对应的 属性值

创建对象

分为两种方式:
    1.字面量的方式:(语法1)(使用较多)
        var obj = {键值对}
    2.内置的构造函数的创建
        var obj = new Object()
        创建一个具有属性或者说具有键值对的 对象

对象关于key的要求或者说对于属性名的要求或者说对于键值对的键的要求

1.推荐使用符合变量命名规则与规范的名字
2.对象的key 也可以使用纯数字来当作键名(属性名/key)
3.可以使用任何特殊符号,但是需要引号包括

一般只推荐第一种!!!

对象的操作 (增删改查)

分为两种方式
      一般来说,大部分场景使用点语法更简单,有一些特殊场景只能使用中括号语法

      点语法会将后边的字符当成字符串来使用,而不是当成变量,如果相当变量来使用。那么应该使用中括号语法

    1. 点语法
        A.查询:获取到对象内部某一个属性对应的属性值
          例如  console.log(obj.a)  //获取obj对象中的a
        B.新增:向对象内部新增一个属性
          例如  obj.d = 100
                console.log('最新的对象',obj)  //将d = 100 添加到obj对象中
        C.删除:删除对象中的某一个属性
        例如  delete obj.a
              console.log('删除后的对象',obj)  //将a从obj对象中删除
        D.修改:修改对象内部某一个属性对应的属性值
          例如  obj.a = 'ture'
                console.log('修改后的对象',obj)  //将a改为ture添加到obj对象中


    2. 中活号语法(数组语湖)
        A.查询:
          例如  console.log(obj['a'])  //获取obj对象中的a
        B.新增:
          例如  obj['d'] = 100
                console.log('最新的对象',obj)  //将d = 100 添加到obj对象中
        C.删除:
          例如  delete obj['a']
                console.log('删除后的对象',obj)  //将a从obj对象中删除
        D.修改:
          例如  obj['a'] = 'ture'
                console.log('修改后的对象',obj)  //将a改为ture添加到obj对象中
  
  ***特殊情况下我们需要使用中括号语法
     1.对象的属性名,有纯数字或者特殊符号,这个时候只能使用中括号语法
        例如:
          var obj = {
                  100: '我的属性名是纯数字100',
                  '!':'我的属性名是特殊符号!',
                  '@':'我的属性名是特殊符号@'
                }
    2.如果涉及变量相关的时候,也需要使用中括号
        例如:

for...in 循环遍历对象

for in : 一个循环语句
对象 : 一种数据格式
遍历 : 一般我们会说‘遍历对象’/‘遍历数组’
遍历对象 : 想办法拿到对象内部所有的属性名,与属性值

语法:
for(var i in 要遍历的对象){
  循环要执行的代码
  例如 -> console.log(obj[i])
  }

数组

数组是一种数据类型,他也是属于引用数据类型(复杂数据类型) 根据字面意思来说,存放数字的一个组合,更完善的说法,数组是存放一些数据的集合. 注意:数组内的数据是有顺序的

创建数组

分为两种方式:
    1.字面量方式:
        语法:
        var arr = [1,2,3,]
    2.内置构造函数的方式
        语法1 : 
        var arr = new Array()   //创建一个空数组
        语法2 : 
        var arr = new Array(5)   //创建一个有长度的数组
        语法3 : 
        var arr = new Array(1,2,3)   //创建一个有内容的数组

数组的Length属性

  Length 翻译过来就是 长度 的意思
  代表这个数组内,有多少个成员

  语法:
  数组名.length
  例如 -> console.log(arr.length)  //打印出arr数组有几个成员

数组的 索引

  索引 也有人叫做 下标
  就是指一个数据,在这个数组内排列在第几个位置上

  注意: 在JS中,索引(下标) 是从 0 开始计算的

  如果想要获取数组指定位置的值,可以通过索引
  语法:
  数组名[下标]  ->  能够获取到这个数组中对应下标的成员具体的值

遍历数组

  想办法拿到数组的每一个成员
  //需求,就是根据arr 这个数组,拿到他的所有下标
  for (var i = 0; i < arr.length; i++) {
      console.log(i)    // 输出下标 0 1 2 3 4 5
  //需求:拿到数组所有的值,输出在控制台
      console.log( arr[i])
    } 

数组基本操作案例

面试手写题,大概率需要

冒泡排序

属于数组排序的算法之一
算法就是解决一个问题最简单最高效的方法

冒泡排序的核心:
    对比数组的前一项和后一项,如果前一项比较大,那么就往后挪
    (这个排序之后是按照从小到大排序)

选择排序

 var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
    console.log('初始数组: ', arr)
    for (var k = 0; k < arr.length; k++) {
      var minIndex = k
      for (var i = k + 1; i < arr.length; i++) {
        if (arr[minIndex] > arr[i]) {
          minIndex = i
        }
      }
      var temp = arr[k]
      arr[k] = arr[minIndex]
      arr[minIndex] = temp
    }
    console.log('选择排序后后的数组:', arr)

数据类型之间的区别

数据类型分为两种:
    1.基本数据类型(简单数据类型)
    2.引用数据类型(复杂数据类型)
基本数据类型内部存储的是值;引用数据类型内部存储的是地址


  1.存储
    变量的数据存储的地方是 内存中
    内存分为两个:  
        栈内存: 基本数据类型,
                如: string number undefined null  booLean  
                    数组/对象/函数  名
        堆内存: 复杂数据类型,将数据本体存放在堆内存中,比如对象或者函数,
                然后将指向该内存的地址,存放在数组名或者对象名或者函数名中
                数组/对象/函数  名  存放在 栈内存 中
  面试官:数据类型之间有什么区别?
         基本数据类型有哪些,然后他们存储的地方是栈内存中
         引用数据类型有哪些,
         然后他们数据本体存放的地方是堆内存中。
         然后变量名存储的位置是栈内存中

  2.赋值
    基本数据类型:赋值以后,两个变量之间没有任何关系,相当
                于将我自己的某一个东西,复制一份给你,
                然后你的就是你的,我的还是我的

    引用数排类型:赋值以后,因为变量内部存储的是指向堆内存的地址,
                所以在赋值的时候,其实是将这个地址给到了另外一个变量,
                那么相当于这两个变量存储的是同一个钥匙,
                所以操作其中一个变量的时候,会影响另外一个变量

  3.比较
    基本数据类型:就是值的比较
    引用数据类型:比较的时候比较的是存储地址

    引用数据类型在对比的时候,对比的是地址
    若这两个对象的地址完全不同,所以返回的结果就是false
    若这两个对象的地址完全相同,所以返回的结果是true

  4.传参
    基本数据类型:将值拷贝一份传递给形参,在函数内修改不会影响外界
    引用数据类型:将存储地址赋值给形参,在函数内修改会影响外界