js第二周第二天知识点

## 数组

+ 有序数据集合 是一个复杂数据类型

+ 有序性

    - 下标 索引

    - 自动生成

    - [0, 数组长度-1]

+ 创建一个数组

+ 添加数据

+ 获取数据

+ 遍历数组

+ 修改数据

+ 删除数据

+ 查找数组里面是否包含某一个数据

+ 数组去重

+ 数组反转

+ 数组拼接

+ 数组排序

## 数据类型

1. 基础的数据类型

    - number string boolean undefined null

2. 复杂的数据类型(引用数据类型)

    - array

## js的存储数据方式-值存储和引用存储

+ 在js中有两种存储数据的方式: 栈和堆

+ 在栈里面存储变量名

+ 如果数据是基础数据类型 直接存在栈里面

+ 如果数据是复杂数据类型 存在堆内存里面 每一次在堆内存存储一个数据都会得到一个空间地址

+ 基础数据类型它的值和变量都是存储在栈里面(值存储)

+ 复杂数据它的变量名是存在栈里面 在栈里面存的值是一个指向堆内存空间的地址(引用) 这个地址指向堆内存空间的数据(引用存储)

+ js在查找数据的时候只会在栈里面查找

## 值传递和引用传递

+ 把一个变量赋值给另一个变量 这个过程称为传递的过程

+ 基础数据类型之间的赋值是把值给另一个变量, 一个变化另一个不受影响  这个赋值过程称为`值传递`

+ 复杂数据类型之间的赋值是把地址给另一个变量, 一个变化另一个也会变化。因为他们的地址是指向同一个堆内存里面的数据 这个赋值过程称为`引用传递`


 

## 值比较和引用比较

+ 两个变量比较是否相等

+ 基础数据类型拿两个变量的值进行比较的

+ 复杂数据类型拿两个变量的地址进行比较的



 

## 字符串

+ 凡是被单引号或者双引号包裹的

+ 多个字符组成的整体

+ 'hello'

+ 字符串在底层存储方式和数组是一致(字符串和数组的共性)

    1. 支持下标的方式访问

    2. 字符串也是有长度

    3. 字符串可以支持遍历

    4. 支持查找

+ 字符串和数组的区别

    1. 不支持下标方式修改

    2. 字符串不支持用forEach去遍历

    3. 不支持字符串的删除

    4. 支持拼接,不建议使用

    5. 不支持反转,不支持排序

 + 反转一个字符串

    1. 把字符串拆分成一个数组

    2. 把数组拼接成字符串



 

+ 字符串的只读性

+ 字符串和数组的相互转换

    1. 把字符串转换成数组(拆分)

        - var 数组 = 字符串.split()

    2. 把数组转换成字符串(拼接)

        - var 字符串 = 数组.join()

+ 字符串的方法

    - 字符串.charAt(下标)

        - 找到某一个小标位置的字符

    - 字符串.charCodeAt(下标)

        - 找到某一个下标位置的字符,再找到这个字符所对应的编码

+ 编码

    - ASCII码表

    - unicode码表(万国码)

    - 字符串比较

        - 字符串比较从左往右拿每一位字符相比

        - 每一位字符串按照它对应的编码进行比较

       

    - 中文编码在utf-8范围

        + u4e00-u9fa5

+ 字符串常用方法

    - 转大小写

        + 转大写

            - toUpperCase

        +转小写

            - toLowerCase

    - 只能转英文


 

+ 字符串裁剪

    - 字符串.substring(开始下标, 结束下标)  包含开始 不包含结束,(包头不包尾)

    - 字符串.substr(开始下标,截取个数)

    - 字符串.slice(开始下标, 结束下标)  包含开始 不包含结束,(包头不包尾)


 

+ substring和slice的区别

    1. slice可以支持负数

        + 传负数代表下标是从右往左数的 从-1开始

        + 裁剪的方向永远都是从左往右

        + 必须有交集才能得到结果

    2. slice既可以裁剪数组也可以裁剪字符串



 

### 拓展数组的方法

+ map方法

    - 将一个数组里面数据经过计算 得到一个计算后的新数组

    ```js

        // map函数调用之后也会有一个返回值  返回就是计算后的数组

        var 新数组 = 数组.map(function(item, index){

            // item代表数组的每一项

            // index代表数组的索引

            // map需要返回一个数据 会把这个数据放到新数组里面

        })

    ```

+ filter方法

    - 将一个数组根据某一个条件进行过滤 得到一个过滤后的新数组

    ```js

        // filter方法调用之后有一个返回值 返回的是过滤后的数组

        var 新数组 = 数组.filter(function(item, index){

            // 这个函数需要有一个返回 返回的是一个条件  是一个布尔值

            // 会根据这个布尔值来决定是保留还是撇弃当前项数据

        })

    ```

+ every方法

    - 判断数组里面是否每一项都符合这个条件

    ```js

        var 布尔值 = 数组.every(function(item, index){

            // 需要返回值 这个返回值就是条件

        })

    ```

+ some方法

    - 判断数组里面是否有符合这个条件的某一项

    ```js

        var 布尔值 = 数组.some(function(item, index){

             // 需要返回值 这个返回值就是条件

        })

    ```

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值