JS数组练习
1.输⼊10个成绩,求总分,最⾼分,最低分
<script type="text/javascript">
var arr = new Array(80,70,86,58,90,35,89,67,50,99);
var sum = 0;
var maxd = 0;
var mind = 100;
for(var i=0;i<arr.length;i++){
sum = sum +arr[i];
if(arr[i]>maxd){
maxd = arr[i];
}
if(arr[i]<mind){
mind = arr[i];
}
}
alert(sum);
alert(maxd);
alert(mind);
</script>
这个题的解题思路就是先设定好⼀个最⼤值和最⼩值,然后让我们的变量arr[i]分别和最⼤值、最⼩值作⽐较,然乎通过转换赋值的形式来得到我们想要得到的最⼤和最⼩值
2.往数组⾥⾯添加数据的时候去重
⽅法⼀(⽐较笨重,但是粗俗易懂):
<script type="text/javascript">
var a = prompt("请输⼊⼀个数字:");
var arr = new Array(1,2,3,4,5);清蒸大螃蟹
var z = 0;
邰丽华怎么读
for(var i=0;i<arr.length;i++){
if(a == arr[i]){
z = 1;
break;
}
}
if(z==0){
arr.push(a);
}el{
alert("该数据在数组⾥⾯已存在!");
}
</script>
当输⼊9的时候没有弹出提⽰框,说明9已经添加进这个数组中
⽅法⼆.运⽤ var.indexof()
<script type="text/javascript">
var a = parInt(prompt("请输⼊⼀个数字:"));---------------------在这⾥⼀定要注意,要把字符串转换成整数
var arr = new Array(1,2,3,4,5);
alert(arr.indexOf(a)); //判断数据是否在数组⾥⾯存在,如果要检索的字符串值没有出现,则该⽅法返回 -1;另外indexOf() ⽅法对⼤⼩写敏感!Of的O为⼤写!</script>
在对话框输⼊⼀个值(这个值在数组中),那么指⽰框弹出的的是这个值的索引
杭州普陀山
在对话框输⼊⼀个值(这个值不在数组中),那么指⽰框弹出的的是这个值的索引就为-1
3.冒泡排序(⽐如从⼤到⼩排序)【*要重点学习⼀下】
我们拿个表格先来分析⼀下这个数组:
<script type="text/javascript">
var arr = new Array(70,34,60,49,20,59,98,100);
催眠曲大全var zj = 0;//中间变量
//第⼀次for⽤来控制⽐较的轮数,i代表轮次
for(var i=1;i<arr.length;i++){
//控制每轮⽐较⼏次的
for(var j=0;j<arr.length-i;j++){
if(arr[j]<arr[j+1]){
//实现交换
zj = arr[j];
arr[j]=arr[j+1];
arr[j+1]=zj;
}
}
}
alert(arr[0]);
</script>
验证⼀下其他数据是否正确
<script type="text/javascript">
var arr = new Array(70,34,60,49,20,59,98,100);
var zj = 0;
for(var i=1;i<arr.length;i++){
for(var j=0;j<arr.length-i;j++){
if(arr[j]<arr[j+1]){
zj = arr[j];
arr[j]=arr[j+1];
arr[j+1]=zj;
}
}
}
alert(arr[2]);
</script>
4.在数组⾥⾯查找数据,找到数据所在位置的索引⽅法⼀:
品味艺术
<script type="text/javascript">
var arr = new Array(1,2,3,4,5,6,7,8,9,10);
var a = 6;
alert(arr.indexOf(a));
</script>
⽅法⼆:
<script type="text/javascript">
var arr = new Array(1,2,3,4,5,6,7,8,9,10);
var a = 6;
for(var i=0;i<arr.length;i++){
if(a==arr[i]){
深圳高考分数线
alert(i);
}
}
</script>
⽅法三:⼆分法查找数据(数据是海量的话,我们得学会⽤能⽤⼆分法),但是要求数组必须是排好序的
<script type="text/javascript">西米的功效
西游记第二回
var arr = new Array(1,2,3,4,5,6,7,8,9,10);
var a = 6;
var minx = 0;
var maxx = arr.length-1;
while(true){
var zjx = parInt((minx+maxx)/2);
if(zjx==minx){
if(a==arr[zjx+1]){
alert(zjx+1);
break;
}
}
if(a==arr[zjx]){
alert(zjx);
break;
}el if(a>arr[zjx]){
minx = zjx;
}el{
maxx = zjx;
}
}
</script>
⼆分法原理:折半查找,每次看做把表分成两半,因为已经排序,所以只需要和中间数⽐较就能确定是在哪⼀半,然后不断分成两半,直到匹配。可以运⽤⼆分法来完成海量数据的检索。⽐如var arr=new Array (1,2,3,4,5,6,7,8,9);这组数组,最⼩的索引是0,最⼤的索引是8。把最⼤和最⼩索引取个平均值,索引是4,分成的2组数组就是0-4和5-8。看中间的索引,对应的元素是5,⽽⽬标值是6>5,索引0-4的数组就不需要考虑了,值考虑索引为5-8的数组。再取索引为5-8的平均值为6(取整数),数组的索引⼜分成了5-6和7-8。索引6对应的元素是7,⽬标值是6<7,所以索引7-8的数组就不需要考虑了。以此类推逐步减⼩⽬标值的范围,找出⽬标值的索引。