一. 数组(Array)
1.数组简介
- 数组是值的有序集合
- 里边的每一个用逗号隔开的叫元素
- 每个元素都有自己的位置,叫索引(下标)
- 数组的元素可以是任何类型
- 数组索引是从0开始的升序数列,数组最大能容纳4294967295个元素
2.创建数组
- 使用数组直接量
- 直接量:程序中直接使用的数据值
3.读写数组元素
- 使用操作符[]来读写数组中的每一个元素,[]中是数组的索引
- 数组有一个内置属性length,属性值存的是元素个数(长度)(循环时/取数组最后一项时使用)
- 如果ary[]不存在的下标得到的时undefined(因为相当于有属性名没有属性值)
- 如果[]里的值大于length长度,相当于新增一个索引,且中间的没有值的索引值会增添empty进行占位,但是在查找占位的索引值时会显示undefiend
- 数组length属性的特别之处在于(他不是只读的,通过修改length,可以从数组末尾删除或者添加元素)
//数组(Array)是一个有序集合 里边的每一个用逗号隔开的叫元素
//每个元素都有自己的位置,叫索引(下标)
//元素可以是任何类型
var ary = []
//数组直接量创建数组
var ary2 = [1, 2, 3]
//读取数组的元素,通过下标
console.log(ary2[2]);
//数组有一个内置属性length,属性值存的是元素个数(长度)(循环时使用/取数组最后一项时)
//for (var i = 0; i < ary2.length; i++) {}
console.log(ary2[ary2.length - 1]);
//如果ary[]不存在的下标得到的是undefined
console.log(ary2[5]);
//中间的4,5会有empty占位置但是查询的时候会显示undefined
ary2[6] = 200;
//length不是只读的,也是可以修改的,没有值的位置依旧还会有empty占位
ary2[length] = 7;
// console.log(ary2.length);
console.log(ary2);
ary2[ary2.length+1] = 20;
4.循环遍历/迭代
// for 循环遍历
for (var i = 0; i < arr.length; i ++) {
arr[i]
}
//for in 循环
for (var i in arr) {
arr[i]
}
5.多维数组
// 创建多维数组
var cityList = [ ['广州', '深圳', '佛山', '东莞', '惠州'],
['南京', '苏州', '徐州', '无锡', '南通'],
['济南', '青岛', '烟台', '潍坊', '淄博'],
['杭州', '宁波', '温州', '绍兴', '湖州']
];
// 多维数组取值
cityList[2][1];
6.字符串具有数组的特性
- 字符串可以通过[]取到指定的字符,只能取值无法修改
- 字符串属性.length可获得字符换的长度(字符的个数)
- 字符串可以向数组那样遍历
二. 调控数组方法
1. push()
- 作用:在数组的末尾追加元素
- 参数:你追加的东西
- 返回值:现数组长度
- 是否改变原数组:改变
var ary = [1,2,3]
var returnAry = ary.push(5,6)
console.log(ary,returnAry)
2.pop()
\
- 作用:删除末尾最后一个
- 参数:没有
- 返回值:被删除元素
- 是否改变原数组:改变
var ary = [1,2,3]
var returnAry = ary.pop()
console.log()
3.shift()
- 作用:删除数组第一项
- 参数:没有
- 返回值:被删除元素
- 是否改变原数组:改变
var ary=[1,2,3]
var returnAry = ary.shift()
console.log(ary,ruturnAry)
4.unshift()
- 作用:在数组前增加元素
- 参数:被增加的元素
- 返回值:现数组长度
- 是否改变原数组:改变
var ary = [1,2,3]
var ruturnAry = ary.unshift(5)
console.loog(ary,returnAry)
5.reverse () 倒序
- 作用:把元素数组反向排列
- 参数:没有
- 返回值:一个被反序的新数组
- 是否改变原数组:改变
var ary = [1,2,33,4,5]
var returnAry = ary.reverse()
console.log(ary,returnAry)
6.sort() 排序
- 作用:把元素重新顺序排列
- 参数:没有
- 返回值:排序后的新数组
- 是否给便原数组:改变
var ary = [1,4,6,2,5]
var returnAry = ary.sort()
console.log(ary,returnAry)
//不传参的时候只能排列10以内的(升序)
//---------------------------传参的时候
var ary2=[1,21,5,33,26]
//回调函数:1.函数是你定义的 2.你没有调用 3.但是这个函数却执行了
ary2.sort(function(a,b){
return a-b; // 升序
// return b-a; //降序
})
7.splice()
- 作用:增删改一体化
- 参数:多个
- 返回值:删除的元素(用数组装的)
- 是否改变原数组:改变
varary = [1,2,3,4]
//1.删除 必须要有两个参数
//参数1. 表示你要开始删除的下标
//参数2. 表示你要删除的个数
var ruturnAry = ary.splice(1,2)
console.log(ary,returnAry)
//2.新增 几个参数
//参数1. 要插入的下标位置
//参数2. 删除的元素数量
//参数3. 要插入的元素
var returnAry = ary.splice(0,0,5)
console.log(ary,returnAry)
//3.修改(删除的个数和新增的个数可以不一致)
//参数1. 开始的下标位置
//参数2. 删除的元素数量
//参数3. 要增加的元素
var returnValue = ary.splice(0,3,4,5);
console.log(ary,returnValue);
8.slice()
- 作用:截取你选中的特定内容
- 参数:
- 返回值:选中内容
- 是否改变原数组:不改变
var ary = [1,2,5,7]
//如果参数不写或者只有一个(0),表示把原数组复制一份
//如果参数有两个,返回值为开始下标到结束下标(包含开始,不包含结束)
//如果参数有负数值,那么就以数组长度加上这个负数来确定位置
//如果结束位置小于开始位置,则返回空数组
var returnAry = ary.slice(0,2);
console.log(ary,returnValue);
9.concat()
- 作用:实现数组或者值的拼接
- 参数:值或者数组
- 返回值:拼接后的新数组
- 是否改变原数组:不改变
var ary = [1,2,4,52,121,12]
var returnAry = ary.concat([1,4,2]);
console.log(ary,returnValue);
10.tostring()
- 作用:把数组转换为字符串
- 参数:没有
- 返回值:字符串
- 是否改变原数组:不改变
11.join()
- 作用:把数组通过指定的连接符转换为字符串
- 参数:连接符
- 返回值:转换后的字符串
- 是否改变原数组:不改变
12.includes()
- 作用:检测数组中是否包括某一项
- 参数:具体项
- 返回值:布尔值
- 是否改变原数组:不改变
13.indexOf/lastindexOf()
- 作用:获取某项在数组中(首次出现的/最后出现的)索引(也可以用来检测是否包含某项)
- 参数:(n,m)
-
- n:检测项
- m:从哪个位置开始检索,如果是lastindexOf的话,就是从索引m停止检索
- 返回值:
-
- 此项在数组中没有出现,返回值为-1
- 若在数组中出现,返回值是具体的检索值
- 是否改变原数组:不改变
数组迭代方法
14.foreach()
- 作用:获取数组中的索引值和索引
- 参数:函数
- 返回值:undefined
- 是否改变原数组:不改变
- 注意:函数没有返回值
var ages = [18,19,40,40]
//让每个人年龄都加一岁
var newAges = [];
var return_value = ages.forEach((a,b)=>{
//newAges.push(a+1);//第一种方法
//newAges[b] = a+1 //第二种方法
//ages[b] = a+1 //第三种方法(改变源数组)
return a+1
})
// console.log(return_value);
console.log(newAges);
console.log(ages);
15. map()
- 作用:把一个数组映射成一个新数组
- 参数:函数
- 返回值:映射后的新数组
- 是否改变原数组:没有
- 注意:函数有返回值
// 有一个数组装着2021年所有人的年龄,2022年以后,每个人的年龄都增加1岁
var allAge = [19,15,2,30,32,43,45];
var age2020 = allAge.map(function (a,b) {
return a+1;
})
console.log(age2020);