一、Array对象原型
数组就是一组数据,js中没有数组这种数据类型,数组是对象创建的。
【下标 / 键】用于区分数组中不同数值的标志就是下标
【值】数组中每一个数据就是值
【键值对 / 元素】键+值就是键值对
【索引数组】以数字作为下标的数组
【关联数组】以字符串作为下标的数组
【注】js中只有索引数组,且索引值只能为从0开始的正向数,没有关联数组
var ar=['张三','李四','王五','小六'];
console.log(ar[2]); //下标不能为负数
二、数组的操作
// 数组的操作————————————————————————
// 创建数组
// 方法一:使用对象原型实例化一个数组
// 1. 空数组
var ar2=new Array();
console.log(ar2,typeof ar2);
// 2. 创建具有数据的数组
var ar3=new Array('张三','李四','王五','小六');
console.log(ar3,typeof ar3);
// 3. 创建指定长度的数组
var ar4=new Array(8); //指定长度为8,但没有数据
console.log(ar4,typeof ar4);
// 方法二:数组字面量(数组专用格式)
// 1. 空数组
var ar5=[];
console.log(ar5,typeof ar5);
// 2. 创建具有数据的数组
var ar6=['张三','李四','王五','小六'];
console.log(ar6,typeof ar6);
// 3. 创建指定长度的数组(不推荐)
var ar7=[,,,,,,,,]; //指定长度为8使用8个逗号
console.log(ar7,typeof ar7);
// 数组的增删改使用和遍历
var ar8=['张三','李四','王五','小六'];
console.log(ar8,typeof ar8);
// 1. 访问数组中的元素
console.log(ar8[0],ar8[2]);
// 2. 添加数组元素
ar8[4]='胖七';
ar8[5]='赵八';
// ar8[8]='二二'; //可以跳跃添加,但中间会自动添加空数据
console.log(ar8);
// 3. 修改数组元素
ar8[3]='孙六';
console.log(ar8);
// 4. 删除数组元素
delete ar8[2]; //delete只能删除值不能删除键,被删除数值变为empty
console.log(ar8);
// 5. 遍历数组
var ar9=['张三','李四','王五','小六'];
for (var i=0;i<ar9.length;i++){
console.log(i,ar9[i]);
}
三、二维数组与多维数组
// 二维数组与多维数组
// 一维数组:数组中所有数据都不是数组
var one=['张三','李四','王五','小六'];
// 二维数组:一维数组中的内容包含一维数组
var two=[
['张三','男',18,182],
['李四','女',17,159],
['王五','男',17,177],
['小六','女',19,164]
];
console.log(two);
console.log(two[1]);
console.log(two[2][1]);
// 多维数组
var three=[
['张三','男',18,182,[2017,172502]],
['李四','女',17,159,[2017,172511]],
['王五','男',17,177,[2017,172526]],
['小六','女',19,164,[2017,172537]]
];
console.log(three[3]);
console.log(three[3][4][1]);
【数组相关函数】
关键字 | 释义 |
---|---|
concat(); | 连接原数组和新的元素 |
join(); | 使用指定字符将数组中所有元素连接成一个字符串 |
pop(); | 在数组结尾处弹出一个元素(删除最后一个元素,直接改变原有数组) |
push(); | 在数组结尾处添加元素(直接改变原有数组) |
shift(); | 在数组开头移除一个元素(直接改变原有数组) |
unshift(); | 在数组开头添加元素(直接改变原有数组) |
reverse(); | 数组倒转(直接改变原有数组) |
sort(); | 数组排序 |
slice(); | 切割数组,并且返回其中的一段 |
splice(); | 数组万能操作方法(直接改变原有数组) |
【 concat(); 】
// 1. concat(); 连接数组元素(连接原数组和新的元素)————————————————————
var ar10=['张三','李四','王五','小六'];
var res10=ar10.concat('孙七','赵八');
// var res10=ar10.concat(['孙七','赵八']); //此写法结果一样
console.log(res10);
// js数组不能采用相加的方式连接数组,相加的结果是字符串
var ar101=['张三','李四','王五','小六'];
var ar102=['孙七','赵八'];
console.log(ar101+ar102);
【 join(); 】
// 2. join() 使用指定字符将数组中所有元素连接成一个字符串
var ar11=['张三','李四','王五','小六'];
var res11=ar11.join('♥');
console.log(res11);
【 pop(); 】
// 3. pop() 在数组结尾处弹出一个元素(删除最后一个元素,直接改变原有数组)
var ar12=['张三','李四','王五','小六'];
ar12.pop();
console.log(ar12);
【 push(); 】
// 4. push() 在数组结尾处添加元素(直接改变原有数组)
var ar13=['张三','李四','王五'];
ar13.push('小六','孙七');
console.log(ar13);
【 shift(); 】
// 5. shift() 在数组开头移除一个元素(直接改变原有数组)
var ar14=['张三','李四','王五','小六'];
ar14.shift();
console.log(ar14);
【 unshift(); 】
// 6. unshift() 在数组开头添加元素(直接改变原有数组)
var ar15=['张三','李四','王五','小六'];
ar15.unshift('小丽','小娜');
console.log(ar15);
【 reverse(); 】
// 7. reverse() 数组倒转(直接改变原有数组)
var ar16=['张三','李四','王五','小六'];
ar16.reverse();
console.log(ar16);
【 sort(); 】
// 8. sort() 数组排序
var ar17=[5,16,2,7,161,26,33,21,19,13,6,32,24,29,14];
// 方法1:按照ASCII码排序
/*
字符 ASCII码
0-9 48-57
A-Z 65-90
a-z 97-122
*/
ar17.sort();
console.log(ar17);
// 方法2:按照数字排序:需定义数字排序规则,如下:
/*
原理是冒泡排序,降序只需将大于和小于的返回值互换
function shengxu(a,b){
// 返回值1,0,-1
if(a>b){
return 1;
}else if(a==b){
return 0;
}else{
return -1;
}
}
*/
// 固定格式。参数2个,返回值为正数,0,负数
function sheng(a,b){
// 返回值1,0,-1
if(a>b){
return 1;
}else if(a==b){
return 0;
}else{
return -1;
}
}
ar17.sort(sheng);
console.log(ar17);
【 slice(); 】
// 9. slice() 切割数组,并且返回其中的一段
// 编号 0 1 2 3 4 5
var ar18=['张三','李四','王五','小六','孙七','赵八'];
// 反向编号 -6 -5 -4 -3 -2 -1
// 1. 从开始位置到结束位置之前,即不包含结束位置
var res18=ar18.slice(1,4);
console.log(res18);
// 2. 从开始位置截取到最后
var res18=ar18.slice(1);
console.log(res18);
// 3. 可以给负参数,表示从后向前数,仍为从开始位置到结束位置之前
var res18=ar18.slice(1,-2);
console.log(res18);
【 splice(); 】
// 10. splice() 数组万能操作方法(直接改变原有数组)
// splice(指定位置,删除几个元素,添加的元素,添加的元素,添加的元素....)
// 编号 0 1 2 3 4 5
var ar19=['张三','李四','王五','小六','孙七','赵八'];
// 1. 向数组中添加元素:将在指定位置之前加
ar19.splice(3,0,'小娜','小丽'); //在王五和小六之间添加小娜,小丽
console.log(ar19);
// 2. 删除元素:从指定位置开始删除指定个元素
ar19.splice(1,2); //删除李四,王五
console.log(ar19);
// 3. 修改元素:从指定位置删除指定个元素,再添加元素
ar19.splice(0,1,'周三'); //张三改为周三
console.log(ar19);