1.回顾练习
<script>
//var arr =[];
var arr = new Array(5);
var flag = true;
for(var i=0;i<arr.length;i++){
var num =Number(prompt("请输入第"+(i+1)+"个同学的成绩:",""));
if(num<=100&&num>=0){
arr[i]=num;
}else{
alert("输入有误\n请检查成绩是否在1--100以内");
flag =false;
break;
}
}
if(flag){
/*for(var i=0;i<5;i++){
document.write("第"+(i+1)+"同学的成绩是:"+arr[i]+"分<br />");
}*/
for(var i in arr){
document.write("第"+(Number(i)+1)+"同学的成绩是:"+arr[i]+"分<br />");
}
}
</script>
发现:在forEach遍历中,var i in 数组名 这个语句中的 i ,竟然是字符类型的?
2.数组数据查找
输入5个学生的成绩,并储存到数组中;遍历数组找找分数是80分的,是第几个同学。(如果没有80分的,则提示没找到)
扩展:输入要查询的成绩进行查找
<script>
var arr =new Array(5);
var count=0;
for(var i =0;i<arr.length;i++){
arr[i] = Number(prompt("请输入第"+(i+1)+"个同学的成绩:",""));
}
var num = Number(prompt("请输入要查询的成绩",""));
for(var i in arr){
if(arr[i]==num){
document.write("第"+(Number(i)+1)+"个同学的成绩是"+num+"分<br />");
count++;
}
}
if(count==0){
alert("对不起,没有查到"+num+"分的同学");
}
</script>
3.数组数据插入
已知某数组: var ary = [20,12,33,45,67];
现在要输入一个任意数据,插入到数组下标为2的位置上。
<script>
var arr = [20,12,33,45,67];
for(var i in arr ){
document.write(arr[i]+" ");
}
document.write("<br />");
var n = Number(prompt("请输入插入数据的位置",""));
var num = prompt("请输入插入的数据","");
for(var i=arr.length;i>=n;i--){
arr[i] = arr[i-1];
}
arr[n-1] = num;
for(var i in arr){
document.write(arr[i]+" ");
}
</script>
4.数组数据删除
<script>
var arr = [20,12,33,45,67];
document.write("数组长度:"+arr.length+"<br />");
for(var i in arr ){
document.write(arr[i]+" ");
}
document.write("<br />");
var n = Number(prompt("请输入删除数据的位置:",""));
document.write("删除的数据位置"+n+"<br />");
for(var i=n-1;i<arr.length;i++){
if((typeof arr[i+1])=='undefined'){
break;
}
arr[i]=arr[i+1];
}
arr.length-=1;
for(var i in arr){
document.write(arr[i]+" ");
}
document.write("<br />数组长度:"+arr.length);
</script>
要注意的是虽然不加if((typeof arr[i+1])=='undefined')去做判断并不会报错,但这种会溢出数组的行为并不合理。
5.、排序
排序就是将数据由底到高,由高到低按照特定次序呈现。
通过排序可以直接拿到特定的数据,提升数据的利用效率。
排序的核心:比较和换位。
5.1冒泡排序
两两相比小的前移。
<script>
var arr = [20,12,33,45,67,11,45,808,12,9,6,5,7,8];
document.write("排序前的数组:"+arr);
document.write("<br />");
for(var i=0;i<arr.length-1;i++){
for(var k = 0;k<arr.length-1-i;k++){
if(arr[k]>arr[k+1]){
var num = arr[k];
arr[k] = arr[k+1];
arr[k+1]= num;
document.write(arr+"<br />")
}
}
}
document.write("排序后的数组:"+arr);
</script>
5.2 选择排序
依次将数组中相对最小的数(最大的数)交换到前面的位置。
<script>
var arr = [20,12,33,45,67,11,45,808,12,9,6,5,7,8];
document.write("排序前的数组:"+arr);
for(var i=0;i<arr.length;i++){
var count = i;
for(var k=i;k<arr.length;k++){
if(arr[k]<arr[count]){
count = k;//记录小的数据的下标
}
}
var temp = arr[i];
arr[i] = arr[count];
arr[count] = temp;
}
document.write("<br />排序后的数组:"+arr);
</script>