数据类型的区别,数组方法

68 阅读5分钟

数据类型的区别,数组方法

数据类型的区别

存储的区别

  • 基本数据类型存储在栈内村中, 比如:string;number;undefined;null;boolean;

  • 复杂数据类型:将数据本体存放在堆内存中,比如对象或者数组,然后将指向该堆内存的地址,存放在数组名挥着对象名中,数组名或者对象名存放在栈内存中。

赋值的区别

  • 基本数据类型:赋值以后,两个变量没有关系了,相当于将我自己的某一个东西,复制一份给到了你,然后你的是你的,我的是我的

  • 复杂数据类型 : 赋值以后,两个变量操作一个存储空间,相当于我将我房间的钥匙复制给你一份,你可以自由进出该房间对这个房间的布局做一些调整, 我也可以自由进出该房间并且也可以对这个房间的布局做调整

比较的区别

  • 基本数据类型是值的比较

  • 复杂数据类型是存储地址的比较

传参的区别

  • 基本数据类型:将值拷贝一份传递给形参,在函数内修改不会影响外界

  • 复杂数据类型:将存储地址赋值给形参,在函数内修改会影响外界

数组的方法

1. push

  • 语法:数组.push(参数)

  • 作用:向数组的末尾新增一条数据

  • 返回值:新增数据后,数组的最新长度

2.pop

  • 语法:数组.pop( )

  • 作用:删除数组末尾最后一个元素

  • 返回值:被删除的数据

3.unshift

  • 语法:数组.unshift(参数)

  • 作用:像数组的开头新增一条数据

  • 返回值:新增数据后,数组的最新长度

4.shift

  • 语法:数组.shift()

  • 作用:删除数组开头第一个元素

  • 返回值:被删除的数据

5.reverse

  • 语法:数组.reverse()

  • 作用:反转数据

  • 返回值:反转后的数组

6.sort

  • 语法1:数组.sort()

  • 作用:将数组中所有的元素成员,转换为字符串,然后一位一位的对比

  • 语法2:数组.sort(function (a, b){ return a - b})

  • 作用:将我们数组内的数据按照数字的从小到大排列

  • 语法3:数组.sort(function(a, b) { return b - a})

  • 返回值:排序后的数组

7.splice

  • 语法1:数组.splice(开始下标, 多少个)

  • 作用:类似于剪切的功能

  • 语法2:数组.splice(开始位置的下标,多少个, 新增的数据1,新增的数据2.....

  • 作用:首先会按照前两个参数指明的位置去剪切出来一部分数据, 然后将第二个参数以后的(从第三个开始)所有数据,放在刚才剪切的位置

  • 返回值:剪切到的数据

8.slice

  • 语法:数组.slice(开始下标, 结束下标)

  • 参数的特点

    • 1.包前不包后

    • 2.两个参数都可以成略不写

    • 3.参数可以支持 负数,相当于 数组.length + 负数

  • 作用:复制出指定范围的内容

  • 返回值:复制到的内容

9.concat

  • 语法:数组.concat(数据1, 数据2, 数据3......)

  • 作用:将传入的数据,合并到指定的数组中,然后返回出来,注意:不会改变原数组!!!

  • 返回值:合并后的数组

10.join

  • 语法:数组.join(“连接符”) 连接符如果不传递默认按照,连接

  • 作用:根据传入的连接符 将数组内的所有元素,拼接成一个完整的字符串

  • 返回值:拼接好的字符串

11.indexOf

  • 语法:数组.indexOf(要查询的数据,从哪里开始查询(下标)) 第二个参数不写默认为0

  • 作用:按照从左到右(按照从小到大)的顺序检查数组中是否包含指定数据

  • 返回值:查询到:返回从左到右数据第一次出现的下标,没有查询到:返回 -1

12.lastIndexOf

  • 语法:数组.lastIndexOf(要查询的数据,从哪里凯斯查询 (下标) ) 第二个参数不写默认为数组最后一个下标

  • 作用:按照从右到左(按照下标的从小到大)的顺序检查数组中是否包含指定数据

  • 返回值:查询到:返回从右到左数据第一次出现的下标 没有查询到:返回 -1

13.forEach

  • 语法:数组.forEach(function (item, index, origin){遍历数组后你想做的事情})

    • 参数:item : 数组中每一个元素

    • index:每一个元素对应的下标

    • origin:原数组

  • 作用:根据数组的元素内容,循环遍历数组,拿到数组的每一项

  • 返回值:没有返回值

  • 语义:遍历数组

14.map

  • 语法:数组.map(function(item, index, origin) {遍历数组后想要做的事})

  • 作用:根据原数组映射出来一个新数组

  • 返回值:是一个映射出来的新数组(需要在函数内部书写returen)

  • 语义:映射数组

15.filter

  • 语法:数组.filter(function (item, index, origin){})

  • 作用:过滤数组

  • 返回值:过滤出来的内容组成一个新数组

16.find

  • 语法:数组.filter(function(item, index, origin){} )

  • 作用:去数组中要查找内容

  • 返回值:查找到的数据,如果找不到那么返回值 undefined

17.findIndex

  • 语法:数组.findIndex(function (item, index, origin) {})

  • 作用:去数组中查找内容

  • 返回值:查找到的数据对应的下标, 如果找不到那么返回-1

18.every

  • 语法:数组.every (function (item, index, origin) {})

  • 作用:判断数组中是否有符合条件的元素(有一个符合条件的就行)

  • 返回值:符合条件_true ; 否则为false

19.reduce

  • 语法:数组.reduce(function (prev, item, index, origin) {}, init)

  • 参数1: function(prev, item, index, origin){}

    • 1.item, index, origin 和之前的含义一样

    • 2.prev : 如果是第一次执行那么可能是数组[0] 的值,也有可能是init 的值

    • 如果是第一次后续的执行,那么他的值就是上一次遍历返回的结果

  • 参数2.:init

    • 随意传递一个值即可,只要符合需求
  • 作用:累加器

  • 返回值:累加后的结果