今天重新看了一遍最基础的JS学习内容,已经浏览完一遍,之后的notes也会依次放上来。JS的基础内容实际上比其它程序语言要简单,但在学习过程中某些细节方面也是不可忽视的。在之后的开发过程中,一些小小的细节没有考虑到都会导致各式各样的bug,因此,基础还是得要学扎实。今天的内容就先开始放数组吧。思维导图我先放上来,作为摘要以及后续回顾,思绪整理,都是非常好的。建议大家先看完整个知识分支,再看知识详细内容,看完之后再根据思维导图复习整理一下学习的内容,是否已经掌握。
一.访问数组
(一)一维数组
1.数组定义
var arr1 = []; //不包含元素的数组
var arr2 = [95,96,97]; //包含3个元素的数组
var arr3 = new Array(); //不包含元素的数组
var arr4 = new Array(1,”hello”,true); //包含3个元素的数组
注意:
var arr5 = [3]; //表示只包含一个整数元素的数组,下标未0,值为3
var arr6 = new Array(3); //表示包含3个元素的数组,但值均为undifined
2.初始化数组
(1)数组中的元素可在定义时初始化,即直接赋值;
(2)也可以先声明一个空数组,随后再向其中添加元素
数组是引用类型的对象
数组赋值给变量时,其实赋值的是地址;因此a是3元素数组,b=a;再给b[0]赋值,a[0]也改变,因为b[0]和a[0]的地址相同
数组作为参数,也是按值传递,传递的是数组的地址
3.访问数组元素
(1)设置数组元素的值——SET
var scores = [91,92,93];
scores[2] = 95; //将值为93的元素重新赋值为95
scores[4] = 94; //在数组尾部添加一个新的元素
(2)获取数组元素的值——GET
var scores = new Array(1,2,3);
console.log(scores[1]); //2
console.log(scores[3]); //undefined
console.log(scores); //数组全部输出
(3)获取数组的长度——length
var arr1 = [];
console.log(arr1.length); //长度为0
/—————————————–/
var arr2 =[]; //长度为0
arr2[0] =87; //长度变为1
arr2[3] =87; //长度变为4
4.遍历数组元素
(1)for循环语句
var a = [10,20,30,40];
for(var i =0; i < a.length;i++){
a[i] += 5;
}
(2)for in 遍历数组元素——用于严格的依次遍历数组中的每一个下标
var numbers = [10,20,30];
for (var i in numbers){
console.log(i+ "-" + numbers[i]);
}
5.数组类型
(1)索引数组
以0、1、2等数字作下标
(2)关联数组:
以一个字符串作下标,由于关联数组的length属性值无法获取其中元素的数量,所以遍历关联数组只能使用for…in循环,不推荐使用。
var a=[];
students[“s07”]= “Tom”
(二)二维数组
1.二维数组的定义:
var arr1 = [[11,12,13],[21,22,23],[31,32,33]];
或
var arr1 = new Array();
arr1[0] = [11,12,13];
arr1[1] = [21,22,23];
或
var arr1 = new Array();
arr1[0] = new Array(1,”Tom”);
arr1[1] = new Array(2,”Tim”);
2.访问二维数组
var arr1 = [[11,12,13],[21,22,23],[31,32,33]];
console.log(arr1[0][0]); //访问打印
arr1[1][2] = 230; //赋值修改
3.遍历二维数组
for(var i = 0 ;i < arr1.length;i++){
for(var j = 0 ;j < arr1[i].length;j++){
console.log(arr1[i][j]);
}
}
二.数组常用方法
获取数组字符串和连接数组是不会改变现有数组。
(一)获取数组字符串
toString() 可以把数组转换成字符串,各元素以逗号相连
join([seperator]) 各元素之间由指定的separator相连
var arr1 = [1234,"Hello",new Date()];
console.log(arr1);
console.log(arr1.toString()); //输出字符串,各元素以逗号相连
console.log(arr1.join("——")); //各元素以——相连
(二)连接数组
concat() 拼接两个或更多的数组
语法:arrObject.concat(arr1,arr2…arrn);
注意:该方法不会改变现有数组,仅仅返回一拼接后的副本
参数:可以是值,也可以是数组。例如:
var arr1 = [12,10];
var arr2 = [50,60];
var arr3 = arr1.concat[10,arr2];
console.log(arr1); //结果仍是12,10
console.log(arr3); //结果为12,10,10,50,60
(三)获取子数组
slice() 返回现有数组的一个子数组
语法:arrObject.slice(start,[end]);
参数start:可以取负值,即从尾部开始算起,倒数第一个元素为-1
参数end:指定结束处下标(不包含),若省略则取值到最后一个元素
举个栗子:
var arr1 = [10,20,30,40,50];
var arr2 = arr1.slice(1,4); //20,30,40
var arr3 = arr1.slice(-4,-2); //20,30
var arr4 = arr1.slice(2); //30,40,50
(四)修改数组
splice() 从数组中删除一部分元素,并添加另一部分元素
语法:arrObject.splice(start,count,e1,e2,…en);
参数count:要删除的元素个数
注意:现有数组内容会改变
(五)倒转数组
reverse()颠倒数组中的元素顺序
语法:arrObject.reverse();
注意:现有数组内容会改变
(六)数组排序
sort()用于对数组元素由小到大进行排序
语法:arrObject.sort([sortby]);
参数:若无,则按元素unicode码排序;也可以指定sortby,按其返回的正负值作排序的依据
注意:现有数组内容会改变
(七)进出栈操作
(1)push() 入栈,在栈顶(数组尾部)添加指定的元素,并返回新的长度
举个栗子:
var arr1 = [10,20];
len = arr1.push(30); //3
len = arr1.push(40,50); //5
(2)pop() 出栈,删除并返回栈顶(数组尾部)的元素
var top = arr1.pop(); //50
(3)shift() 从数组头部增加元素,其余和push相同
(4)unshift() 从数组头部删除元素,其余和pop相同