1.数组概念
数组(array)是一个有序的数据集合。说白了,数组就是一组数。
数据是一组数据的集合,数组里面可以放任意的数据类型。
* 数组的类型(引用数据类型)
数组是引用数据类型,操作数组时实际是操作数组的内存地址
数组时由字符串属性名和属性值组成的特殊对象,数组的属性通常称为索引
var x = [2,5,6];
var y = [2,5,6];
console.log(x == y); // false
那时因为引用类型比较的是地址,变量a和变量b指向的位置不一样,不能判相等。
如果a里面存储的是基本类型,那么语句b=a就是把a的值赋值一份给b。如果a里面存储的是引用类型,那么b将指向a现在指向的位置,a的值不会赋值一份,a、b指向同一个地方。
2.创建数组的方式和访问
第一种通过自变量 直接赋值
例如 :
var arr = [];
var arr1 = [1,2,5,3];
第二种通过Array构造器创建数组
例如:
var arrobj = new Array(); //空数组
var arrobj = new Array(3); //长度为3的空数组
var arrobj = new Array("Saab","Volvo","BMW"); //赋值后的数组
访问数组
通过指定数组名以及索引号码,你可以访问某个特定的元素。数组的索引号是从0开始的
arr1[1] ==> 2
3.常用的属性
3.1 length 访问数组的大小(长度);
var a = [0,2,5,46,7,8,3]
a.length ==> 7
3.2 数组prroptype原型对象
允许你向数组对象添加属性或方法。(后面说原型)
4.常用的方法
4.1头尾操作 push(),pop(),unshift(),shift()
push() 尾插
作用:
在数组的后面添加一个或多个数据
使用:
arr.push();
参数:
参数为需要插入的数据,多个数据用逗号隔开
返回值:
返回push结束后数组的长度,length值改变原数组
代码例子
var arr = [];
arr.push(1);
console.log(arr) //[1]
arr.push(2,3,4,5)
console.log(arr) //[1,2,3,4,5]
pop()尾删
作用:
删除数组后面最后一项
使用:
arr.pop();
参数:无
返回值:
返回删除的最后一项数据改变原数组
unshift()头插
作用:
在数组的前面添加一个或多个数据
使用:
arr.unshift();
参数:
参数为需要插入的数据,多个数据用逗号隔开
返回值:
返回push结束后数组的长度,length值改变原数组
shift() 头删
作用:
删除数组第一个项
使用:
arr.shift();
参数:无
返回值:
返回删除的最后一项数据改变原数组
4.2concat()方法
作用:
在原有数组的最后面添加任意数据类型的值使用语法:
使用:
arr.concat();
参数:
需要合并的 数组变量、数组、散值。
返回值:
返回拼接后的新数组;
不改变原数组
代码例👇
var arr1 = ["青龙","白虎"];
var arr2 = ["朱雀","玄武"];
arr1 = arr1.concat(arr2,["八岐大蛇"],"麒麟");
console.log(arr1);
图例👇
4.3 数组截取方法
4.3.1 slice() 截取方法
作用:
在原有数组的基础上截取指定范围内的元素组成一个新数组
使用:
arr.slice(startidx,[endidx]);
参数:
startidx : 截取开始下标
endidx : 截取结束的下标
返回值:
返回截取的新数组;
不改变原数组
4.3.2 splice()方法
作用:
可以截取,插入,删除,替换数组中的元素
使用:
arr.slice(startidx,[endidx,item1....itemn]);
参数:
startidx : 截取开始下标
endidx : 截取数目
item : 截取完后,需要插入的元素
返回值:
返回截取的数组;
改变原数组
- 截取(不插入替换内容就是截取)
arr.splice(2,2)// 从数组下标为2开始,截取2项
- 插入(截取的项为0,代表不截取内容,只插入内容)
var arr = ["A","B","C","D","E","F","G"];
arr.splice(2,0,"嘻嘻","哈哈"); //插入到下标为2的项前,不删除项目
console.log(arr);
- 替换
var arr = [1,2,3,4,5,6];
arr.splice(3,1,'C');
console.log(arr) // [1,2,'C',4,5,6]
4.4 数组排序
4.4.1数组的反序
作用:让数组反转
使用:
arr.reverse();
参数:无
返回值:
返回翻转后的数组
改变原数组
代码例:
var arr = [0,2,5,6,2,3,1];
arr.reverse();
console.log(arr); //[1, 3, 2, 6, 5, 2, 0]
4.4.2 sort() 排序方法
作用:让数组中的每一个数据按照一定顺序排列
使用:
arr.sort();
参数:
arr.sort();
不传参数就默认排序,可以传入一个函数作为参数,自定义排序规则
返回值:
返回排序的数组
改变原数组
不传参一般按照从小到大的顺序排序
sort()里面有一个参数,这个参数是一个函数。
var arr = [0,2,5,6,2,3,1]
//从大到小
arr.sort((a,b) => a - b)
console.log(arr)
//从小到到
arr.sort((a,b) => b - a)
console.log(arr)
4.5数组拼接转字符串
join()方法拼接
作用:让数组中的每一个数据按照一定顺序排列
使用:
arr.join();
参数:
默认: ,
按照指定的分隔符连接数组中的每一项
返回值:
返回拼接后的新字符串
改变原数组
代码例👇
var arr = [0,2,5,6,2,3,1]
console.log(arr.join()) //0,2,5,6,2,3,1
4.6 数组查询位置方法
- indexOf :从头开始
- lastIndexOf() :从末尾开始
作用:查询数据在数组中第一次出现的位置,并返回下标
使用:
arr.indexOf() / arr.lastIndexOf();
参数:
- 第一个参数是要查询的项
- 第二个参数是可选的,表示从哪里开始向后查找,如果省略,则表示从头开始查找
返回值:
数据在数组中第一次出现的位置,并返回下标 。
如果没有查到找,返回 -1
不改变原数组
4.7 isArray(arr)
作用:判断arr是不是数组
如果arr是数组,那么Array.isArray(arr)的结果是true
如果arr不是数组,那么Array.isArray(arr)的结果是false
无奈源于不够强大