7. Array对象
下标/键:用来区分数组中不同数据的编号,就是下标。(JS下标永远是连续的整数)
值:数组中的每一个数据,就是一个值。
键值对: 键 + 值 = 键值对
注意:JS中的下标一定是从0开始,连续的整数,没有负数下标。
创建数组
方法一:使用对象原型,实例化一个数组。
// 1.空数组
var arr = new Array();
// 2.创建具有数据的数组
var arr = Array('1','2','3',4,5,6)
// 3.创建指定长度的数组
var arr = new Array(8); //指定数组的长度为8,但是没有数据。
方法二:数组字面量创建一个数组(数组专用格式)
//1.空数组
var arr = [];
//2.创造具有数据的数组
var arr = ['1','2','3',4,5,6];
//3.创建指定长度的数组(不推荐)
var arr = [, , , , , , , ,]
数组的增删改查操作
var chou = ['可爱女人','听妈妈的话','以父之名','麦芽糖','爱的飞行日记'];
// 1.访问数组中的元素
console.log(chou[1],chou[2])
// 2.添加数组元素
chou[5] = '牛仔很忙';
chou[8] = '彩虹' //跳着加,中间自动补空数据
// 3.修改数据元素
chou[5] = '稻香'
// 4.删除数组元素
delete chou[4] //数据没了,键还在
// 5.数组遍历中的每个数据(数组的长度 = 最大下标 + 1)
for(var i = 0; i < chou.length; i++){
console.log(i,chou[i])
}
二维数组和多维数组
//一维数组(数组中的所有数据,都不是数组)
var chou = ['可爱女人','听妈妈的话','以父之名','麦芽糖','爱的飞行日记'];
console.log(chou)
//二维数组(一维数组中的内容包含一维数组)
var erwei = [
['可爱女人','女',18],
['以父之名','男',38],
['听妈妈的话','女',28]
//访问二维数组
console.log(erwei[0][2]); //18
//多维数组(一旦数据超过三维,请考虑数据设计是否合理)
数组常用函数
<script>
//数组常用函数,数组对象的方法
//concat() 连接数组元素
var fivetiger = ['赵云', '黄忠', '马超'];
var newarr = fivetiger.concat('关羽', '张飞');
console.log(newarr);
//相加的方式(不可以使用加法实现数组链接)
var ar1 = ['赵云', '黄忠', '马超'];
var ar2 = ['关羽', '张飞'];
var result = ar1 + ar2 //成为了字符串操作,触发了数组对象的toString操作
// join() 使用字符串将数组元素连成一个字符串 五星级
var chou = ['可爱女人', '听妈妈的话', '以父之名', '麦芽糖', '爱的飞行日记'];
console.log(chou)
var result = chou.join('*')
console.log(result)
//pop() 在数组的结尾处弹出一个元素(直接改变原有数组)
//push() 在数组的结尾处添加一个元素(直接改变原有数组)
//shift() 在数组开头移除一个元素(直接改变原有数组)
//unshift() 在数组开头添加一个元素(直接改变原有数组)
//reverse() 数组倒转方法
//sort() 数组排序
var letters = [2, 151, 1, 51, 51, 1, 1, 1, 51, 5, 15, 1]
//方法一:按照ascii码进行排序
/*
字符 整数
0-9 48-57
A-Z 65-90
a-z 97-122
*/
nums.sort()
console.log(nums)
//方法二:按照数字排序
//定义数字排序规则(固定格式,形参为2,返回值必须是正数,0,或者负数)
/*
function func(){
//返回值 1 0 -1
if(a> b){
return 1
} else if(a == b){
return 0
}else {
return -1
}
*/
var letters = [2, 151, 1, 51, 51, 1, 1, 1, 51, 5, 15, 1]
function func() {
//返回值 1 0 -1
if (a > b) {
return 1
} else if (a == b) {
return 0
} else {
return -1
}
}
nums.sort(func);
//slice()
//1. slice(a,b) 切割数组,并且返回其中一段
var games = ['王者荣耀','英雄联盟','QQ炫舞','穿越火线','地下城勇士']
//从开始位置到结束位置之前,不包含结束位置
games.slice(1,4)
//2. slice(a) 从开始位置截到最后
games.slice(3)
//3. slice(0,b) 从开头位置截到结束位置之前
games.slice(0,3)
//4. 从指定位置截取到结束位置之前 不包含结束位置 参数为负表示从后向前数
games.slice(1,-3)
//splice() 数组万能方法
var games = ['王者荣耀','英雄联盟','QQ炫舞','穿越火线','地下城勇士']
//1. 向数组中添加元素
//splice(指定位置,0,指定位置之前添加的元素)
games.splice(1,0,'QQ飞车');
//2. 删除元素(指定位置,删除指定位置以及之后的几个元素)
games.splice(4,1)
//3. 修改元素
//splice(指定位置,删除指定位置以及之后的几个元素,指定位置添加的元素)
games.splice(4,1,'坦克大战')
</script>