js的数组

44 阅读4分钟

1.什么是对象?

就是一个数据的合集(复杂数据)
js的数据类型     1.基本数据  2.复杂数据
对象属于复杂数据类型(引用数据类型)
说起来是复杂数据但也不复杂
   var obj = {
    //内部存放键值对   (还有人叫    key/value     属性名:属性值)
    name:'QF',   //逗号间隔
    age:18    //冒号左边:键;冒号右边:值;
   }
   

2.创建对象

    var obj = {
        name:'hh',
        age:20
    }
    console.log(obj)
    //内置构造函数
    var hh = new Object()     //创建一个空对象
    console.log(hh)

3.对象key的要求

    对象对于key的要求    冒号左边
    1.推荐使用符合变量名规范和规则
    2.可以使用数字作为key
    3.可以使用特殊符号

4.对象的增删改查

    对象的操作(增删改查)
        1.点语法
        2.中括号语法(数组语法)
    var obj = {
        name:'hh'
    }
    console.log(obj)
    //点语法
    //查(对象.key)
    console.log(obj.name)
    //修改(对象.key = 新值)
    obj .name ='gh888'
    console.log(obj)
    //增加
    obj.name = 18   //向对象 obj 中新增加一个key-->age 对应的值为18
    console.log(obj)
    //删除(delete obj.key)
    delete obj.name
    console.log(obj)
    var obj = {
        name:'hh'
    }
    //中括号语法   (数组语法)
    //查 (对象['key'])
    console.log(obj['name'])
    //修改   (对象['key'])
    obj ['name'] = 'qg999'
    console.log(obj)
    //增加   age   修改()
    obj ['age'] = 18
    console.log(obj)
    //删除   delete
    delete obj['name']
    console.log(obj)

5.两种对象的操作方式

    对象的操作方式为21.点语法
        2.数组语法
    如何选择两种方式
        1.对象的key符合命名规范的时候都可以
        2.出现纯数字为key或者特殊符号@# 我们需要使用中括号
        3.当出现变量的时候(想要用变量作为key)也需要使用中括号语法
        var obj = {
        123:'1234567',
        '@':'我是特殊符号'
        }
        console.log(obj)
   //点语法有问题
        console.log(obj.123)   //语法不支持
        console.log(obj.'@')   //语法不支持 

6.遍历对象

    遍历对象
    就是拿到对象的所有的键值对
   var obj = {
    name:'hh',
    a:123,
    b:456,
    c:789
   }
   //for...in 循环
   for(var key in obj){
    //console.log(key)       //每一轮循环拿到的都是对象的key
    console.log(obj[key])    //数值
    console.log(key,obj[key])    //名字加数值
   }

7.认识数组

    认识数组
    是什么
    数组---->一组数字的集合(这样说太片面了)
            存放一些数据的集合
   var arr = [100,200,300,'a','b','c',false,true,undefined]
   console.log(arr)

8.创建数组

    创建数组
      1.字面量
      2.内置构造函数
   字面量
   var arr = [1,2,3,4,5]
   console.log(arr)
    //内置构造函数
    var arr1 = new Array()   //空数组
    console.log(arr1)
    var arr2 = new Array(5)   //创建一个长度为5的数组(虽然有长度,但实际的值为5)
    console.log(arr2)
    var arr3 = new Array(5,10)   //创建一个有内容的数组,第一个值为5,第二个值为10
    console.log(arr3)

9.数组的length

    数组的length
    代表了数组成员的数量
    var arr = [1,2,3,4,5,6,undefined]
    console.log(arr)
    var arr = [1,2,3,4,5,6,undefined]
    console.log(arr.length)   //打印成员的个数7个

10.数组的索引值

    数组的索引值(下标)
    数组的索引就代表了当前数据在数组的第几个位置(注意下标从0开始)
    var arr = [1,2,3,4,5]
    下标0  1  2  3  4  
    console.log(arr)
    //通过下标获取数组对应的成员
    console.log(arr[0])      //获取数组中的第一个成员
    console.log(arr[3])      //获取数组中的第三个成员
    console.log(arr[4])      //获取数组中的第四个成员
    console.log(arr[arr.length - 1])    //相当于arr[4]---->5

11.遍历数组

    遍历数组
    拿到数组的每一个成员
    var arr = [1,2,3,4,5]
    //下标0  1  2  3  4 
    for(var i = 0;i < arr.length;i++){
        console.log(i)
        console.log(arr[i])
    }

12.数据类型之间的区别

    数据类型之间的区别
        存储的区别
            1. 基本数据类型: 存储在栈内存中, 变量内部就是实际的值
            2. 引用数据类型: 变量存储在栈内存中, 变量内部存储的是 指向 堆内存 的 地址(对象实际的值, 存储在 堆内存中)
        赋值的区别
            1. 基本数据类型: 是 值的 传递
                    可以理解为, 将我自身的值 复制一份 给到另一个变量, 后续修改另一个变量时 与我自身没有任何关系
            2. 引用数据类型: 是 地址 的传递
                    可以理解为, 将自身的 地址 复制一份 给到另一个变量, 后续修改互相会有影响
        比较的区别
            1. 基本数据类型
                比较时, 是拿变量实际的值, 去做对比
            2. 引用数据类型
                比较时, 是拿引用地址做对比, 判断是不是执行一个地址
        传参的区别
            1. 基本数据类型
                是 值 的传递, 将自身的值 复制一份 传递给函数的形参
            2. 引用数据类型
                是 地址 的传递, 将自身的地址 复制一份 传递给函数的形参
        1. 基本数据类型
        2. 复杂数据类型 (function; object; array)