4月5日--数组
1、数组的创建标准方式:
数组没有参数时:表示初始容量为0
如:var arr0=new Array();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组的创建</title>
<script type="text/javascript">
// 仅有一个number类型的参数:表示初始容量
var arr=new Array(10);
// console.log(arr);
arr[0]=2;
arr[3]=5;
arr[9]=10;
// console.log(arr);
// 仅有一个非number类型的参数:表示初始数据
var ttt=new Array("10");
// 有不止一个参数:表示初始数据
var eee=new Array(1,2,4,7,3);
// console.log(eee);
// 简化方式1:省略new关键字
var a=Array(10);
// console.log(a);
// 简化方式2:只能用于初始数据,不适用于初始容量
var b=[5.8];//
console.log(b);
</script>
</head>
<body>
</body>
</html>
2、数组的使用:
输入一组数,输入end表示结束
输出数组之和,平均数,最大数,最小数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组的使用</title>
<script type="text/javascript">
var scores=[];
do{
var n=prompt("请输入(end表示结束):");
if(n=="end"){
break;
}
scores[scores.length]=n*1;
}while(true);
var sum=0;
var maxScore=scores[0];
var minScore=scores[0];
for(var i=0;i<scores.length;i++){
sum+=scores[i];
if(maxScore<scores[i]){
maxScore=scores[i];
}
if(minScore>scores[i]){
minScore=scores[i];
}
}
console.log('sum='+sum);
console.log('avg='+sum/scores.length);
console.log('max='+maxScore);
console.log('min='+minScore);
</script>
</head>
<body>
</body>
</html>
3、数组的类型
数组类型1:数值索引数组
数组类型2:字符串索引数组
输出数据的类型
//var arr=new Array(4);
// for(var i=0;i<arr.length;i++){
// console.log('数据是:'+arr[i]+",类型是:"+typeof arr[i])
// }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组的类型</title>
<script type="text/javascript">
// 数组中数据的类型
//数组类型1:数值索引数组
// var arr=new Array(4);
// arr[0]=100;
// arr[1]="Hello";
// arr[3]=true;
// arr[5]=function(){};
// for(var i=0;i<arr.length;i++){
// console.log('数据是:'+arr[i]+",类型是:"+typeof arr[i])
// }
//数组类型2:字符串索引数组
var arr=new Array(2);
arr["name"]="mike";
arr["age"]=20;
arr["gender"]="male";
arr["8.5"]="133123455";
console.log(arr);
</script>
</head>
<body>
</body>
</html>
4、数组的遍历:
定长for循环:对于未定义的数组会出现undefined
迭代for循环:对于未定义的数组直接跳过不显示(字符串索引的数组只能用迭代for循环)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组的遍历</title>
<script type="text/javascript">
//数值索引数组既可以使用定长for也可以使用迭代for
// 区别在于,迭代for会跳过未赋值数据单元
var arr=new Array(5);
arr[0]=100;
arr[2]=20;
arr[4]=300;
// 定长for循环
for(var i=0;i<arr.length;i++)
{
console.log('arr['+i+']='+arr[i]);
}
// 迭代for循环
for(var i in arr){
console.log('arr['+i+']='+arr[i]);
}
console.log('-------');
//字符串索引数组:只能使用迭代for循环
arr=new Array();
arr["name"]="mike";
arr["age"]=20;
arr["gender"]="male";
arr["phone"]="133123455";
for(var i in arr){
console.log('arr['+i+']='+arr[i]);
}
</script>
</head>
<body>
</body>
</html>
5、数组的排序:
arr.sort();//数组的排序是默认按照ASCII表进行排序
var nums=[100,34,67,23,19];
nums.sort();// 将数值转为字符串后再排序
如果想改变比较规则,为sort添加一个回调函数作为参数
nums.sort(compNum);
console.log(nums);
function compNum(a,b) {
return a-b; //a>b升序a<b降序
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组的排序</title>
<script type="text/javascript">
var arr=["mike","andy","jerry","tommy","john","Tom"];
console.log(arr);
//sort默认按照字符串(ASCII)进行排序
arr.sort();
console.log(arr);
var nums=[100,34,67,23,19];
// 将数值转为字符串后再排序
nums.sort();
console.log(nums);
// 如果想改变比较规则,为sort添加一个回调函数作为参数
nums.sort(compNum);
console.log(nums);
function compNum(a,b) {
return a-b;
}
console.log('================');
//自定义排序规则:比较一组字符串的,要求首先按照字符串长度(也是length属性)比较,长度相同再按照ASCII比较
arr=["mike","andy","jim","jerry","tommy","john","tom"];
arr.sort(compLength);
console.log(arr);
function compLength (a,b) {
var diff=a.length-b.length;
if(diff==0){
return a>b?1:0;
}
return diff;
}
</script>
</head>
<body>
</body>
</html>
7、数组的其它方法:
数组的正序:nums.sort(compNum);
function compNum(a,b) {
return a-b;
}
数组的反转:nums.reverse();
nums=[];
nums.push(20);//相当于:nums[nums.length]=20;
var ret=nums.pop()//相当于var ret=nums[nums.length-1];nums.length--;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组的其它方法1</title>
<script type="text/javascript">
var nums=[100,34,67,23,19];
// 将数值转为字符串后再排序
nums.sort(compNum);
function compNum(a,b) {
return a-b;
}
console.log(nums);
console.log('================');
// 反转:reverse
nums.reverse();
console.log(nums);
nums=[];
console.log(nums.length);
nums.push(20);//相当于:nums[nums.length]=XXX;
nums.push(30);
nums.push(40);
console.log('================');
console.log(nums);
console.log(nums.length);
console.log('================');
//弹出数据
// var ret=nums.pop();//相当于:
var ret=nums[nums.length-1];
nums.length--;
console.log(ret);
console.log(nums);
</script>
</head>
<body>
</body>
</html>
浙公网安备 33010602011771号