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>