数组的定义:
1.数组:一组数 Array 引用类型 []
2.数组定义:
1) new Array()
2)new Array(item,item,item...); 定义同时即初始化
3)new Array(length) 定义指定长度的数组
4) [] 数组
3.类型判断 instanceof
4.数组赋值
数组中每一个元素都有一个索引,从0开始
数组名[索引]=值;
5.数组取值
数组名[索引]
6.数组遍历
长度:length
for
for...in
7.两个不限制
不限制长度
不限制类型
8.引用类型赋值,传递的是地址
注意:
基本类型变量赋值,传递的是值
var a=10;
var b=a;
引用类型赋值,传递的是地址
var arr=[90,10];
var arr0=arr;
例如:
var arr=new Array();//定义一个数组 空数组
通过索引为数组赋值
arr[0]=100;
arr[1]=200;
console.log(arr[1]);
console.log(arr[0]);
数组遍历
第一种方法:for
数组的遍历
var arr=[1,2,3,4,5];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
举例:录入班级学生姓名,当遇到exit时,结束录入
1)输出班级所有学生的姓名
var arr=new Array();
var name;
while((name=prompt('请输入学生姓名:'))!='exit'){
arr[arr.length]=name;//将数据存入数组末尾
}
//输出
for(var j=0;j<arr.length;j++){
console.log(arr[j]);
}
第二种方法:for … in
for(var i in arr){
console.log(i,arr[i]);
}
举例:
将数组中第一个数据修改为100(不能修改原数组)
var arr=[2,34,6];
var arr0=[];
//遍历
for(var i in arr){
arr0[i]=arr[i];
}
arr0[0]=100;
console.log(arr0);
console.log(arr);
//合并两个数组,不修改原数组
第三种方法:for … Each
语法:array.forEach(function(item, index, arr), thisValue)
item 数组元素
index 索引
arr 数组自身
返回值: undefined
知识点回顾:
基本数据类型:number string boolean undefined null
引用类型: Object Date Function Array RegExp
区别:
基本数据类型的存储发生在栈内存中
引用类型:存储分两块,在堆中存储数据,在栈中保存数据在堆中的内存地址
数组内置方法: 是否修改原数组
(1)栈方法(先进后出) 修改
push(item....item) 在数组末尾添加元素
pop 删除数组末尾元素
(2)队列方法(先进先出) 修改
push() 在数组末尾追加元素
shift() 删除数组第一个元素
(3)数组操作方法
concat(arr...) 数组合并 返回新数组
unshift(item...) 在数组头部插入元素 修改
slice(start,end) 截取数组 [start,end) 未修改
splice: 修改
splice(index,howmany) 删除数组元素
splice(index,howmany,item...) 先删除,再添加
(4)排序方法 修改
sort 排序(默认按照字符串排序)
reverse 倒叙
(5)其他方法
join(sp) 使用指定字符将数组元素拼接为字符串
(6)新方法
forEach(fn) 遍历
fn函数有三个参数
item 数组元素
index 索引
arr 数组自身
indexOf 查找元素在数组中的位置 找不到 -1
lastIndexOf 从后向前查找数组中是否包含元素 找不到 -1
some(fn) fn 有三个参数 //判断数组中是否有满足规则的(有一个即可)
every(fn) fn 有三个参数 // 判断数组中是否均满足规则的
filter(fn)
举例:
录入某班级学生的成绩,当遇到’exit’是结束录入
1)班级学生是否包含不及格(60分以下)的学员?
2)班级学生是否包含优秀(90分以上)的学员?若有,输出个数
function getData(){
var arr=[];//成绩
var score;//
while((score=prompt('请输入成绩:'))!='exit'){
arr.push(score);
}
return arr;
}
//录入数据
var arr=getData();
//遍历数组
arr.forEach(function(item){
console.log(item);
});
//判断优秀学员
var count=0;//
var isCos=arr.some(function(item){
return item>90;
});
if(isCos){
//遍历
arr.forEach(function(item){
if(item>90) count++;
});
console.log('优秀学员有:'+count+'个');
}else{
console.log('没有优秀的');
}
只能用 for…in
var arr=[23,23243,2,34];
//对象数组
var arr0=[[23,43],['李四',90],['王五',10],['Jack',199]];
var arr=[
['李四','二年级',20],
['王五','一年级',23],
['莉莉','二年级',19],
['小花','二年级',21]
];
console.log(arr.length);//4
//输出二年级年龄大于20岁的学生姓名
arr.forEach(function (item) {
if(item[1]=='二年级'&&item[2]>20){
console.log(item[0]);
}
});
举例:
张三 20
李四 21
王五 22
小花 19
小兰 20
var arr=[];
arr['张三']=20;
arr['李四']=21;
arr['王五']=22;
arr['小花']=19;
arr['小兰']=20;
// console.log(arr['小花']);
for(var i in arr){
console.log(i,arr[i]);
}