常用算法1--数组中取不重复的值 和 求最大最小值

1 示例:随机出四位验证码,数字或字母,或组合,大小写都可以,但四个不能重复

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>验证码1</title>
</head>
<body>
<p>需求:随机出四位验证码,数字或字母,或组合,大小写都可以,但四个不能重复</p>
	
<script>
var code=[];    //待选字符
var newCode=[]; //四位验证码

//存入0-9数字
for(var i=0; i<=9; i++){
	code[i]=i;
}

//存入小写26个字母
for(var i=0; i<26; i++){
	code.push(String.fromCharCode(97+i));
}

//存入大写26个字母
for(var i=0; i<26; i++){
	code.push(String.fromCharCode(65+i));
}

for(var i=0; i<4; i++){
	var n=parseInt(Math.random()*code.length);	//随机产生一个数
	
	var same=false; //定义一个用来判断是否存在的变量
	
	//判断随机取出的是否已经存在了
	for(var j=0; j<newCode.length; j++){
		if(newCode[j]==code[n]){
			same=true;
			break;
		}
	}
	
	if(!same){
		newCode.push(code[n]); //不存在就存入
	} else{
		i--;                   //存在,就回退一次
	}
}

alert('验证码为:'+newCode.join('')); //数组拼接成字符串

</script>

</body>
</html>

关键:

定义一个用来判断是否存在的变量,如果为false,才存入新数组;如果为true,刚回退一次循环。

判断一个元素是否在数组里,不能在循环里面写,要在外面写。因为没有结束,判断的不是整体。

 

2 还是取不重复,用indexOf的方法:

示例:随机出四位验证码,数字或字母,或组合,大小写都可以,但四个不能重复

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>验证码2</title>
</head>
<body>
<p>需求:随机出四位验证码,数字或字母,或组合,大小写都可以,但四个不能重复</p>
	
<script>
var code=[];    //待选字符
var newCode=[]; //四位验证码

//存入0-9数字
for(var i=0; i<=9; i++){
	code[i]=i;
}

//存入小写26个字母
for(var i=0; i<26; i++){
	code.push(String.fromCharCode(97+i)); //使用ASCII码
}

//存入大写26个字母
for(var i=0; i<26; i++){
	code.push(String.fromCharCode(65+i));
}

for(var i=0; i<4; i++){
	var n=parseInt(Math.random()*code.length);	//随机产生一个数
	
	//用indexOf判断,如果是-1说明不存在
	if(newCode.indexOf(code[n])==-1){
		newCode.push(code[n]);
	} else{
		i--; 
	}	
}

alert('验证码为:'+newCode.join('')); //数组拼接成字符串

</script>

</body>
</html>

 

3 求最大值和最小值

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>求最大最小值</title>
</head>
<body>
	
<script>
var arr=[]; //定义一个数组
var num=5;	//数组的长度

for(var i=0; i<num; i++){
	arr[i]= +prompt('请输入第'+(i+1)+'个数,共有'+num+'个'); //转化成数值,不然后面没法求和
}

var max=arr[0],	//定义最大值
	min=arr[0];	//定义最小值

var sum=0; //求和
for(var i=0; i<arr.length; i++){
	if(max<arr[i]){
		max=arr[i];
	}
	
	if(min>arr[i]){
		min=arr[i];
	}
	sum=sum+arr[i];
}

alert('最大值为:'+max);
alert('最小值为:'+min);
alert('和为:'+sum);

</script>

</body>
</html>  
posted @ 2018-09-20 15:40  后知后觉0107  阅读(591)  评论(0编辑  收藏  举报