数组

什么是数组

数组的概念
数组,是可以存储着一些任意类型或者相同类型数据的集合。

数组的创建方式

内置构造函数创建数组
1.使用 js 的内置构造函数 Array创建一个数组
2.构造函数(类)特点:首字母大写,new运算符调用

字面量创建一个数组
1.直接使用 [ ] 的方式创建一个数组
2.在计算机科学中,字面量是用于表达源代码中一个固定值的表示法。

声明提升

1、变量声明提升:
不管变量在函数体里的什么位置进行定义(声明),那么在预解析(预编译)时,浏览器会先把变量的声明提升到函数体的最开始
2、注意:
提升的是变量的声明,而不是赋值

javascript中定义数组 javascript 数组定义_赋值

数组的length属性

  1. length 就是表示数组的长度,数组里面的成员个数
  2. length 属性是动态的(可读写)
  3. 即通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。

数组的索引

  1. 如何访问数组的每个元素,“索引”哈
  2. 索引也叫作下标,是指一个数据在数组里面排在第几个的位置
  3. 注意: 在所有的编程语言里面,索引都是从 0 开始的,所以,索引的最大值是 数组的长度减一

递归

一、递归概念:

递归就是特殊的嵌套调用,递归就是函数自己调用自己

递归函数中必须有一个分支是不调用自己的,要不然就调死了。

二、递归函数的特点:

1、跟踪比较麻烦

2、执行效率低

三、递归使用场景(度的把握):

1、如果一个需求即能用循环解决,又能用递归解决,强烈建议你使用循环。

2、在树形结构里,是必须使用递归了。

举两个例子:

1、用递归去做阶乘:

javascript中定义数组 javascript 数组定义_赋值_02


javascript中定义数组 javascript 数组定义_数组_03

2、用递归去做斐波那契数列:

javascript中定义数组 javascript 数组定义_数组_04


javascript中定义数组 javascript 数组定义_递归_05

for和for…in循环

for循环遍历数组:
遍历:就是把数组的元素过一遍

for…in循环
1.遍历数组
2.遍历对象

for…in 循环和for循环的区别
1、在循环数组时
for in 循环给循环变量赋值为 字符串类型,for in循环必须把所有的元素要循环一遍,普通的for循环给循环变量赋值为 数字类型,普通的for的循环,可以控制循环哪些元素,更加灵活。
2、循环对象:
for…in循环可以循环对象
for循环,没法直接循环对象。
3、扩展
用for…in循环数组时,就是把数组当作了对象处理,下标就是键(键就是属性名;)。
再其实啊,浏览器在处理数组时,会(可以)把它当作对象

for…in循环的案例:

javascript中定义数组 javascript 数组定义_javascript_06


javascript中定义数组 javascript 数组定义_赋值_07


for循环的案例:

javascript中定义数组 javascript 数组定义_递归_08


javascript中定义数组 javascript 数组定义_javascript_09

数组的官方函数

  • push() 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
  • pop() 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
  • unshift()方法能够在数组前面添加任意个项并返回新数组的长度。
  • shift() 方法能够移除数组中的第一个项并返回该项,同时将数组长度减 1。
  • reverse() 方法会反转数组项的顺序。
  • sort() 方法按字母表升序排列数组项。
  • concat() 方法可以基于当前数组中的所有项创建一个新数组,参数可以是数组项或者数组。
  • slice() 方法它能够基于当前数组中的一或多个项创建一个新数组。可以接受一或两个参数。
  • splice() 方法,对数组进行删除、插入、替换,是最强大的数组方法,返回值是数组,改变原数组。
  • join()方法,将数组转换成对应的字符串。参数就是连接符。

数组的排序

什么是排序
排序,就是把一个乱序的数组,通过我们的处理,让他变成一个有序的数组

排序的类型:
1.冒泡排序
2.选择排序

不同数据类型在内存中存储的区别

基本数据类型:基本数据类型: number / string / boolean / undefined / null

基本数据类型在内存中的存储情况

javascript中定义数组 javascript 数组定义_递归_10

复杂数据类型

复杂数据类型在内存中的存储情况

javascript中定义数组 javascript 数组定义_javascript_11

数据类型之间的比较和赋值

比较:
基本数据类型是 “值” 之间的比较
复杂数据类型是 “地址” 之间的比较
赋值:
基本数据类型之间的赋值(值传递)
复杂数据类型之间的赋值(引用传递)

对象

对象的概念:
对象是javascript的数据类型。对象是一种复合值,它将很多值聚合在一起,可 通过名字访问这些值。对象也看做是属性的无序集合,每个属性都是一个键/值对。
对象的创建
1.构造函数创建对象
2.字面量创建对象