概述
这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。
今天来学习数组,主要是创建数组、访问数组、添加元素、删除元素、遍历数组。
1.创建数组
数组是有序的数据集合,创建数组有以下几种方式:
① 用数组的字面值创建,如下代码示意:
//用数组的字面值创建
let arr1 = [1, 2, 3, 4];
console.log(arr1, typeof arr1);
运行结果如下:
- (4) [1, 2, 3, 4] 'object'
② 使用构造函数,如下代码:
//使用构造函数
let arr2 = new Array(5, 6, 7, 8);
③用Array创建,如下代码:
//用Array创建
let arr3 = Array(7, 8, 9);
④ 使用Array.of 创建
// 使用Array.of创建
arr4 = Array.of(10, 11, 12);
如果只有一个元素,只能用字面值和Array.of创建,如下代码是创建只有一个元素的数组:
// 创建只有一个元素的数组
let arr5 = [5];
console.log(arr5); //输出:[5]
// 创建只有一个元素的数组
let arr6 = Array.of(6);
console.log(arr6); //输出:[6]
用构造函数和Array创建只有一个元素的数组,得到的是n个空元素的数组,如下代码:
let arr7 = Array(6); //表示定义数组的长度
console.log(arr7); //返回: (6) [empty × 6]
let arr8 = new Array(7); //表示定义数组的长度
console.log(arr8); //返回: (7) [empty × 7]
创建空数组可以通过以上4种任意方法即可,如下代码:
//创建空数组
let arr9 = [];
console.log(arr9); //输出:[]
let arr10 = new Array();
console.log(arr10); //输出:[]
let arr11 = Array.of();
console.log(arr11); //输出:[]
let arr12 = Array();
console.log(arr12); //输出:[]
PS:数组有点类似Python中的列表,Python中列表的相关操作可详见本人另外的博文。
Python中列表的相关操作
2.访问数组
访问数组可以用索引来访问,JavaScript中的数组和Python中的列表一样,他里面的元素都有索引值,索引值从左往右是从0开始到数组的长度减一,从右往左是-1、-2、-3这样的。
获取数组长度语法是:数组名.length,如下代码演示:
let arr = [1, 2, 3, 4];
console.log(arr.length); //获取数组长度,输出:4
用索引值获取元素语法为:数组名[索引值],如下代码演示:
let arr = ["Python", "Java", "C++", "JavaScript"];
console.log(arr.length); //获取数组长度,输出:4
console.log(arr[0]); //输出:Python
console.log(arr[1]); //输出:Java
console.log(arr[2]); //输出:C++
console.log(arr[3]); //输出:JavaScript
如果获取元素时候索引值不存在,会返回undefined,如下代码:
console.log(arr[4]); //如果不存在,返回undefined
3.添加元素
添加元素可以直接指定位置添加,如果这个位置有值的话,原来的值就会被新的值覆盖,如果新的位置大于数组的长度,数组会自动添加长度,并且用空的值来填充空位,如下代码演示:
let arra = [1, 2, 3];
arra[0] = 5;
console.log(arra); //输出:(3) [5, 2, 3]
arra[3] = 6;
console.log(arra); //输出:(4) [5, 2, 3, 6]
arra[8] = 10; //索引值远远大于数组长度
console.log(arra); //自动添加了空元素,输出:(9) [5, 2, 3, 6, empty × 4, 10]
4.删除元素
如果要删除数组中最后一个元素,可以直接改变数组长度的值,如下代码演示:
let arrDel = [1, 2, 3];
console.log("删除前的数组:", arrDel);
arrDel.length = 2; //改变列表长度
console.log("删除后的数组:", arrDel);
/*
上面代码运行结果如下:
删除前的数组: (3) [1, 2, 3]
删除后的数组: (2) [1, 2]
*/
如果清空数组,可以直接将数组长度设置为0,如下代码:
arrDel.length = 0; //清空数组
console.log(arrDel); //输出:[]
删除数组中固定位置的元素可以用数组的splice方法,它接收两个固定的参数,一个参数为要删除元素的索引值,第二个元素是要删除的数量,后面的参数是要增加的元素,语法结构如下:
数组名.splice(删除元素的索引值,删除的数量,增加的元素1,增加的元素2,增加的元素3……)
下面是代码示例:
let arrDel2 = ["apple", "banana", "orange", "pear"];
arrDel2.splice(2, 1); //表示在索引值为2的位置开始删除元素,删除元素数量为1
console.log(arrDel2); // 输出:(3) ['apple', 'banana', 'pear']
arrDel2.splice(1, 2, "watermelon", "grape", "mango");
//上面代码表示在索引值为1的位置删除两个元素,再增加'watermelon','grape','mango'三个元素
console.log(arrDel2); // 输出:(4) ['apple', 'watermelon', 'grape', 'mango']
数组的splice方法还可以给任意位置添加数组,只需要把删除的数量参数设置为0即可,如下代码:
arrDel2.splice(1, 0, "bamboo", "cherry"); //在1的位置增加'bamboo','cherry'
console.log(arrDel2); // 输出:(6) ['apple', 'bamboo', 'cherry', 'watermelon', 'grape', 'mango']
5.遍历数组
数组遍历有三种方式,第一种是用for循环,如下代码示例:
//第一种方式:for循环
console.log("第一种方式:for循环"); //增加一个分割
let arrErg = [1, 3, 5, 7, 9];
for (let i = 0; i < arrErg.length; i++) {
console.log(arrErg[i]);
}
第二中方式是用for...of 循环,如下代码演示:
//第二种方式:for……of循环
console.log("第二种方式:for of循环"); //增加一个分割
for (let ele of arrErg) {
console.log(ele);
}
JavaScript中的for……of循环与Python中的for……in 循环类似,代码比较急简洁,但是它没有计数的功能,因此要根据自己的需求选用不同的遍历方式。
第三种方式用数组的forEach方法,这个方法接收一个回调,它会给回调函数三个参数,第一个是当前遍历到的元素,第二个是当前遍历到的索引,第三个是数组本身,如下代码演示:
//第三种方式:forEach方法
console.log("第三种方式:forEach方法"); //增加一个分割
arrErg.forEach((ele, index, self) => {
console.log(ele, index, self);
});
上面代码运行结果如下:
1 0 (5) [1, 3, 5, 7, 9]
3 1 (5) [1, 3, 5, 7, 9]
5 2 (5) [1, 3, 5, 7, 9]
7 3 (5) [1, 3, 5, 7, 9]
9 4 (5) [1, 3, 5, 7, 9]
上面每一行第一个数是遍历到的元素,第二个数是索引值,后面是数组本身。
如果只传一个参数,默认是遍历到的元素,如下代码演示:
console.log("如果只传一个参数,默认是遍历到的元素");
arrErg.forEach((ele) => {
console.log(ele);
});
运行结果如下:
1
3
5
7
9
上面我们用的都是箭头函数,前一天我们学过了函数的相关知识,顺便也复习一下,把上面的箭头函数改成普通函数,是这样的:
//下面是把箭头函数改写成普通函数的样子
arrErg.forEach(fun);
function fun(ele, index, self) {
console.log(ele, index, self);
}
以上便是今天的学习内容,如果对你有所帮助就点个赞再走吧。