(七)数组
1. 基本概念
- JS 数组都是动态创建的,可以自由增加数组长度,这点不同于 C/C++。
- 一个 JS 数组内可以存放不同类型的元素,例如
['abc', 1, true, undefined]
,这点也不同于 C/C++/Java。
2. 创建数组
2.1 数组字面量创建数组
-
创建空数组
1
let arr = [];
-
创建一般数组
1
let arr = [1, 2, 3];
2.2 new Array 创建数组对象
-
创建空数组
1
let arr = new Array();
-
创建指定长度的数组,有2个空数组元素
1
let arr1 = new Array(2);
-
创建放有指定元素的数组([2, 3])
1
let arr2 = new Array(2, 3);
-
一些示例
1 2 3 4 5 6
let arr_0 = [1, true, "aaa"]; let arr_1 = []; let arr_2 = new Array(); // [] let arr_3 = new Array(2); // [empty × 2] let arr_4 = new Array(2,); // [empty × 2] let arr_5 = new Array(2, 3, 4); // [2, 3, 4]
3. 基本操作
-
数组元素访问
1
let e = arr[index];
-
获取数组长度
1
let len = arr.length;
-
数组遍历
方式一:1 2 3
for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
方式二:
1 2 3
for (const i in arr) { console.log(arr[i]); }
-
数组逆转
1 2 3 4 5 6 7 8 9
// 反转数组 function reverse(arr) { let res = []; for (let i = arr.length - 1; i >= 0; i--) { res[res.length] = arr[i]; } return res; } console.log(reverse([1, 2, 3, 4, 0])); // [0, 4, 3, 2, 1]
4. 检测一个值是否为数组
4.1 instanceof
|
|
4.2 Array.isArray()
Array.isArray() 方法用于检测一个值是否为数组。
5. 添加删除数组元素的方法
方法名 | 说明 | 返回值 |
---|---|---|
push(arg1,...) |
末尾添加一个或多个元素 | 返回新的长度 |
pop() |
删除数组最后一个元素,数组长度减 1,无参数,修改了原数组 | 返回所删除元素的值 |
unshift() |
向数组的开头添加一个或多个元素,修改了原数组 | 返回新的长度 |
shift() |
删除数组的第一个元素,数组长度减 1,无参数,修改了原数组 | 返回第一个元素的值 |
6. 数组排序
方法名 | 说明 | 是否修改原数组 |
---|---|---|
reverse() |
颠倒数组中元素顺序,无参数 | 会改变原数组,返回新数组 |
sort() |
对数组的元素进行排序 | 会改变原数组,返回新数组 |
sort
方法对数组进行原地排序,但是默认按照字典序排序。需要传入一个比较函数 cmp(a, b)
,然后得到我们需要的排序效果。
|
|
其中,let cmp = (a, b) => a - b;
为升序,b - a
为降序。
7. 数组索引方法
方法名 | 说明 | 返回值 |
---|---|---|
indexOf() |
数组中查找指定元素的 第一个索引 | 若存在则返回索引号,否则返回 -1 |
latsIndexOf() |
查找指定元素在数组中的 最后一个的索引 | 若存在则返回索引号,否则返回 -1 |
indexOf
前面开始查找,lastIndexOf
从后面开始查找,但索引都是从前往后由 0
算起。
|
|
8. 数组去重
|
|
9. 数组与字符串互转
9.1 数组转换为字符串
方法名 | 说明 | 返回值 | 是否改变原数组 |
---|---|---|---|
toString() |
将数组转换成字符串,逗号分隔每一个 | 返回一个字符串 | 不改变 |
join('分隔符') |
把数组中的所有元素转换为一个字符串,以指定符号分割 | 返回一个字符串 | 不改变 |
示例
|
|
9.2 字符串转换为数组
使用 split()
方法。
|
|