js:对象、数组、栈、堆、深浅拷贝的概念,数组的方法-第六天

# 一、复习

1、函数的概念

2、函数的特点

5、函数的执行

6、事件分类

7、函数的-入口

8、arguments

9、函数的返回值-出口  返回值return  返回任何值,同时结束代码

10、作用域

11、声明提升  函数的整体提升

12、递归   类似循环:消耗性能

13、对象:构造函数

    - 概念

    - 意义

    - 本质

    - 创建:字面量、构造函数

    - 操作

    - 增删改查

    - 分类

# 三、对象 - 数组

1、object对象:数据的无序集合,本质是键值对,都是数据的打包

2、array数组:数组,数据的有序集合,本质是有索引(下标)的数据,都是数据的打包

    - 一组数据的组合

    - 有序、索引、下标:0~数组的length-1

    - 长度、个数、length

    - 配合循环快速解析数组中的所有数据

3、创建数组

    - 字面量:var arr= []

    - 构造函数:var arr = new Array();

    - 区别:当且只有一个数值行数据时,字面量认为这就是一个数据,构造函数认为这是长度

4、数组的操作

    - 索引+长度

        - 增:数组的增其实只是在增加长度,增加长度之后,再给新增加的位置赋值(原则上来说只能在数据的最后新增)

        - 删:数组的删其实只是在缩小长度,缩小长度之后,(原则上来说只能在数据的最后开始删除)

        - 改:重新赋值,找到索引的位置赋值即可

        - 查:根据索引直接查去数组中的数据

    - 方法操作

        - 方法:属于某个对象的函数,数组的方法:属于数组对象的函数

        - 语法、功能、参数、返回值,是否改变数据

         -数组.push()

            - 最后新增

            - 要更新的数据

            - 新增之后的数组长度

            - 改变原数据

         -数组.shift()

            - 删除开头

            -

         -数组.unshift()

            - 首位新增

         -数组.pop()

            - 末尾删除

         -数组.slice()

            - 截取指定

            - 从参数1截取到参数2的前一位的数据,返回值是截取出的新数组,没有改变原数组

         -数组.splice()

            - 删除并替换

            - 参数1:开始删除的位置,参数2:删除的个数,参数3:要插入到到删除位置的数据

         -数组.sort()

            - 排序

         -数组.reverse()

            - 反转

         -数组.concat()

            - 合并数组,如果参数是数组会被展开

         -数组.join()

            - 传入的参数替换逗号,并且全部转换成一连串的字符

         -数组.sort()

            - 按照字符排序

            - 加入函数之后按照数字排序

            - // 排序

                        `// 按照字符排序

                        var arrs = [54,85,9,5,74,31,8];

                        // var arr2 = arrs.sort();

                        //按照数字排序

                        var arr2 = arrs.sort(function(a,b){

                            return a - b;   //从小到大

                            return b - a;   //从大到小

                        });`

         -includes()

            - 函数用来判断一个数组是否包含一个指定的值,包含则返回true,否则false

    `<link rel="stylesheet" href="../../../2月/2周/22、2、28/数组的操作.html">`

5、数组的分类

    - 数组是一组数据的组合,一个数组中,尽量存储同类的数据

    - 全是字符的数组是字符数组 ....,数值数组       .....布尔数组

    - 复杂数组

        - 全是对象的数组,json数组

            [{name:'edw'},{name:'effefr'},{name:'rerfef'},{name:'rerere'}]

        - 全是数组的数组,二维数组=多维数组

            [[45,2],['evf','re'][5,5,8]]

        - 复杂数组逐层解析

6、关于计算机的存储机制

    - 栈:用来存储指定数据所在的堆空间的地址,空间小、稳定、不可修改

    - 堆:用来存储具体的数据,空间大、灵活、可以被修改

    - 栈和堆:一一对应,可以一对一,可以一对多,不可以多对一

7、根据数据在内存中的存储数据形式划分

    - 引用传递的数据:复杂数据,在内存中,变量存储在栈中,值存储在堆中,栈和堆通过地址产生联系

        - 在赋值时,拷贝的是地址,导致了修改了新地址的值,不会影响原数据的值

        - object,arry,function

    - 值传递的数据:基本数据,在内存中,变量和值,都存储在栈中,不占堆空间

        - 在赋值时,拷贝的是值导致了修改了新数据的值,会影响原数据的值

        - string,number,Boolean,undefined,null

8、引用传递数据的拷贝方式

    - 浅拷贝:只拷贝地址,修改新数据,会影响原数据

        - 使用 = 赋值时,默认的时浅拷贝

    - 深拷贝:不拷贝地址,只拷贝值,修改新数据,不会影响原数据

        1、先解析引用传递的数据,解析成值传递的数据,再做拷贝

            - 遍历之后逐个复制

            - 数组采用循环遍历

            - 对象采用for~in遍历

9、对象的遍历

    - 对象是无序集合,不能使用循环直接遍历

    - 要使用专属的遍历方式:for~in,遍历的是键(key)

    for(var i in obj[i]){

        // i就是obj的键

        // obj[i]就是对应的值

    }

var a = {name:‘tgbh’};

var a在内存中开辟了一个栈空间,起了个名字叫a

再在内存中开辟了一个堆空间,里面存储了给数据10,

= 表示堆空间的地址,存到了堆中

# 四、随机数

1、生成随机数:Math.random(),得到一个0~1之间的随机数,不包括0和1

2、范围随机数

function random(min,max){

    return Math.round(Math.random()*(max-min)+ min)

}

Math.round取整(四舍五入)


 

<!-- 10万个数据如何提升性能

    1、声明放在前面

    2、提前计算好arr.length -->

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值