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