数组

113 阅读3分钟

数组

1、什么是数组

一组任意类型的数据(可以随意的动态扩容)

2、数组的作用

用一个容器装载数据

3、数组的写法
3.1构造函数创建数组

var arr = new Array( "参数1","参数2",...... );// new可省略,但不推荐

3.2数组的字面量表达方式

var arr = [1,2,"A"];

4. 数组的长度 arr.length
  1. 获取数组的长度
  2. 改变数组的长度
  3. new Array(n),括号里面是一个数值,代表这个数组的长度。
5. 数组的下标 arr[i]
  1. 下标是从 0 开始
  2. 获取元素
  3. 改变元素(给元素赋值)
6. 遍历数组
6.1 for 遍历数组 数组长度决定遍历次数
var arr = [36, 43, 53, 71, 46, 44, 15, 69, 66, 35];
for (var i = 0; i < arr.length; i++) {
    console.log(i,arr[i]); // 输出的 i 是数值
}
复制代码
6.2 for...in 遍历数组 跳过undefined

k ---> key ---> 键

v ---> value ---> 值

var arr = [36, 43, 53, 71, 46, 44, 15, 69, 66, 35];
for (var k in arr) {
    console.log(k, arr[k]); // 输出的 k 是字符串
}
5. 数组的下标 arr[i]
  1. 下标是从 0 开始
  2. 获取元素
  3. 改变元素(给元素赋值)
6. 遍历数组
6.1 for 遍历数组 数组长度决定遍历次数
var arr = [36, 43, 53, 71, 46, 44, 15, 69, 66, 35];
for (var i = 0; i < arr.length; i++) {
    console.log(i,arr[i]); // 输出的 i 是数值
}
复制代码
6.2 for...in 遍历数组 跳过undefined

k ---> key ---> 键

v ---> value ---> 值

var arr = [36, 43, 53, 71, 46, 44, 15, 69, 66, 35];
for (var k in arr) {
    console.log(k, arr[k]); // 输出的 k 是字符串
}

71S1Y@VZ%7WSJ5VTIOGT577.png

7. 栈方法 VS 队列方法
  1. 栈方法后进先出 LIFO (类比羽毛球筒)
  2. 队列方法先进先出 FIFO (类比排队)
8. 数组中的方法

8.1 会改变原数组的一些方法:

1. push()

  • ① 作用:往数组最后添加新元素。改变原数组。
  • ② 参数:多个任意类型的数据
  • ③ 返回值:返回数组的新长度

2. pop()

  • ① 作用:删除数组最后面的元素。改变原数组。
  • ② 参数:无参
  • ③ 返回值:返回被删除的元素

3. shift()

  • ① 作用:删除数组最前面的元素。改变原数组。
  • ② 参数:无参
  • ③ 返回值:返回被删除的元素

4. unshift()

  • ① 作用:往数组最前添加新元素。改变原数组。
  • ② 参数:多个任意类型的数据
  • ③ 返回值:返回数组的新长度

5. splice()

  • ① 作用:删除,插入,替换。改变原数组。
  • ② 参数:起始位置下标,删除的个数,插入多个任意类型的元素......
  • ③ 返回值:返回被删除的元素组成的数组。(插入的返回值是一个空数组)

6. sort()

  • ① 作用:排序(升序、降序)。改变原数组。
  • ② 参数:无参
  • ③ 返回值:返回排好序的原数组。

【注】sort是根据ASCII码进行比较。>=10的数比较会出错,需要增加配置规则。

7. reverse()

  • ① 作用:倒序。改变原数组。
  • ② 参数:无参
  • ③ 返回值:返回倒序的原数组。

8.2 不会改变原数组的一些方法:

1. concat()

  • ① 作用:合并/数组浅拷贝。不改变原数组。
  • ② 参数:多个任意类型的数据/无参
  • ③ 返回值:返回合并后的数组/返回拷贝的数组。

2. slice()

  • ① 作用:截取数组指定区域(包括起始位置,不包括结束位置)。不改变原数组
  • ② 参数:起始位置下标,结束位置下标。若只有一个参数代表从起始位置到最后。
  • ③ 返回值:返回截取的数组。