• 6-1 数组函数练习


    1、引用

    /*          var num = 10;
    			function show(num){
    				num++;
    				alert(num);
    			}
    			alert(num); //10
    
    			show(num);  //11  num = num
    
    			alert(num); //10*/
    
    
    			/*
    				引用
    			*/
    
    			/*var arr = [1, 2, 3, 4];
    
    			function show(arr){
    				arr.push("hello");
    				alert(arr);
    			}
    
    			alert(arr); //[1, 2, 3, 4]
    			show(arr);  //[1, 2, 3, 4, "hello"]
    			alert(arr); //[1, 2, 3, 4, "hello"]*/
    

    2、引用排序函数

    <html lang="en">
    	<head>
    		<meta charset="UTF-8">
    		<title>Document</title>
    		<script src = "tool.js"></script>
    		<script>
    			var arr = [10, 9, 5, 1, 2, 6, 7];
    			// bubbleSort(arr);
    			selectSort(arr);
    			alert(arr);
    		</script>
    	</head>
    	<body>
    		
    	</body>
    </html>
    

    3、return

    /*function add(num1, num2){
    				var b = num1 + num2;
    				return "hello";
    			}*/
    
    		/*
    			1、确定你的函数要不要结果。
    			2、return语法,return后面写什么,外面拿到的值,就是return后面的表达式。
    		*/
    
    
    		/*var res = add(10, 20);
    		alert(res);*/
    

    4、arguments

                function show(){
    				alert(arguments.length);
    				alert(arguments); //输出:object Arguments
    			}
    
    			show(1, 2, 3);
    
    			var arr = [1, 2, 3, 4, 5];
    			show(arr);
    

    5、习题

    1、有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。([2,3,4,56,67,98] //63
    2、编写函数map(arr) 把数组中的每一位数字都增加30%
    3、编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型
    		/*var arr = [2,3,4,56,67,98];
    		var num = 63;
    		for(var i = 0; i < arr.length; i++){
    			if(arr[i] > num){
    				arr.splice(i, 0, num);
    				break;
    			}
    		}*/
    
    		// alert(arr);
    		/*
    			关键:找出第一个第一个比该数大的数
    		*/
    
    		var arr = [10, 20, 30, 40, 60];
    		function map(arr){
    			for(var i = 0; i < arr.length; i++){
    				arr[i] = arr[i] * 1.3;
    			}
    		}
    
    		/*map(arr);
    		alert(arr);*/
    
    		function has(arr, num){
    			var isHas = false; //假设没有
    			for(var i = 0; i < arr.length; i++){
    				if(arr[i] == num){
    					isHas = true;
    					break;
    				}
    			}
    			return isHas;
    		}
    
    		var res = has(arr, 60);
    		alert(res);
    
    4、生成13位条形码(对之前的知识综合练习)
    Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

    	例如:690123456789
第三位计算其校验码的过程为:

    	                1、前十二位的奇数位和6+0+2+4+6+8=26

                    	2、前十二位的偶数位和9+1+3+5+7+9=34

                    	3、将奇数和与偶数和的三倍相加26+34*3=128

                    	4、取结果的个位数:128的个位数为8

                    	5、用10减去这个个位数10-8=2

        所以校验码为2(注:如果取结果的个位数为0,那么校验码不是(10-0=10),
        而是0)实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。

        例如:输入:692223361219输出:6922233612192
    
    			//想办法将这个十二位数拆成每一位
    			//69012345678
    			function barCode(num){
    				//1、分别取出每一位数
    				var numArr = []; //存储取下来的每一位数
    				while(1){
    					if(num == 0){
    						break;
    					}
    					numArr.push(num % 10);
    					num = parseInt(num / 10);
    				}
    				numArr.reverse();
    
    				//2、求奇数和和偶数和
    				var odd = 0;
    				var even = 0;
    				for(var i = 0; i < numArr.length; i++){
    					if(i % 2 == 0){
    						//奇数位
    						odd += numArr[i];
    					}else{
    						//偶数位
    						even += numArr[i];
    					}
    				}
    
    				//3、
    				var tmp = (odd + even * 3) % 10;
    				if(tmp != 0){
    					tmp = 10 - tmp;
    				}
    
    				numArr.push(tmp);
    				return Number(numArr.join(""));
    
    			}
    
    			var res = barCode(690123456789
);
    			alert(res);
    
    5、编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组

    /*
    倒着删除
    【注】凡是遍历数据去重,都倒着删除。
    */

                    function noRepeat(arr){
    				//去重
    				//选择arr.length - 1个数 和后面进行比较
    				//i选出的数
    				/*for(var i = 0; i < arr.length - 1; i++){
    
    					//j被比的数
    					for(var j = i + 1; j < arr.length; j++){
    						if(arr[i] == arr[j]){
    							arr.splice(j, 1);
    						}
    					}
    				}*/
    
    				for(var i = arr.length - 1; i > 0; i--){
    					for(var j = i - 1; j >= 0; j--){
    						if(arr[i] == arr[j]){
    							arr.splice(j, 1);
    						}
    					}
    				}
    			}
    
    
    			var arr = [10, 20, 20, 20, 30, 20, 40, 50];
    			noRepeat(arr);
    			alert(arr);
    
    6、猴子吃桃

    最强王者法则:
    1、找出临界值,临界值就是,不用计算,直接心算得出的值。
    2、找出第n次和n-1次的关系
    3、假设函数已经可以使用,写出n和n-1之间的公式。

            有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,
    		又多吃了一只,第二天照此办法,吃掉剩下桃子的一半另加一只,
    		天天如此,到第num(num <= 10)天早上,猴子发现只剩一只桃子了,
    		问这堆桃子原来有多少只?
    			n为还剩n天吃完的桃子数
    	
    分析:
                    peach(10) / 2 - 1 = peach(9);
    				peach(10) = (peach(9) + 1) * 2;
    				peach(n) = (peach(n - 1) + 1) * 2;
    		
    
    			function peach(n){
    				if(n == 1){
    					return 1;
    				}
    				return (peach(n - 1) + 1) * 2;
    			}
    			//46
    			var res = peach(5);
    			alert(res);
    
    7、密文
    /*
    				某个公司采用公用电话传递数据,数据是四位的整数,
    				在传递过程中是加密的,加密规则如下:
    					1、每位数字都加上5,
    					2、然后用除以10的余数代替该数字,
    					3、再将第一位和第四位交换,
    					4、第二位和第三位交换,请编写一个函数,传入原文,输出密文
    			*/
    
    			//4 3 2 1
    			function ciphertext(num){
    				//1、拆成数组
    				var numArr = [];
    				while(1){
    					if(num == 0){
    						break;
    					}
    					numArr.push(num % 10);
    					num = parseInt(num / 10);
    				}
    				for(var i = 0; i < numArr.length; i++){
    					numArr[i] += 5;
    					numArr[i] = numArr[i] % 10;
    				}
    				
    				return Number(numArr.join(""));
    			}
    			var res = ciphertext(1234);
    			alert(res);
    
    8、计算器
    <head>
    		<meta charset="UTF-8">
    		<title>Document</title>
    	</head>
    	<body>
    		<input type="text" id = "num1" placeholder="请输入第一个数">
    		<input type="text" id = "num2" placeholder="请输入第二个数">
    		<!-- 
    			点击按钮以后,执行后续字符串中的代码
    		 -->
    		<button onclick = "btnClick('+');">+</button>
    		<button onclick = "btnClick('-');">-</button>
    		<button onclick = "btnClick('/');">/</button>
    		<button onclick = "btnClick('*');">*</button>
    		<button onclick = "btnClick('%');">%</button>
    	</body>
    	<script>
    
    
    		function btnClick(operator){
    			// alert(operator); 
    			var oNum1 = Number($("num1").value);
    			var oNum2 = Number($("num2").value);
    			//根据不同的运算符,进行不同的运算。
    			var res = counter(oNum1, operator, oNum2);
    			alert(res);
    		}
    
    
    		/*
    			简化代码
    		*/
    		function $(id){
    			return document.getElementById(id);
    		}
    
    		function counter(num1, operator, num2){
    			var res = 0;
    			//1、运算符判断
    			switch(operator){
    				case "+":
    					res = num1 + num2;
    					break;
    				case "-":
    					res = num1 - num2;
    					break;
    				case "*":
    					res = num1 * num2;
    					break;
    				case "/":
    					res = num1 / num2;
    					break;
    				case "%":
    					res = num1 % num2;
    					break;
    				default:
    					alert("error");
    					break;
    			}
    			return res;
    		}
    
    	</script>
    </html>
    
    【注】
        <body>
    		<!-- onclick = ""后面字符串中写着js的执行代码 -->
    		<button id = "btn" onclick = "btnClick();">按钮</button>
    	</body>
    	<script>
    		/*var oBtn = document.getElementById("btn");
    		oBtn.onclick = function(){
    			alert(1);
    		}*/
    
    		function btnClick(){
    			alert("点击");
    		}
    	</script>
    
  • 相关阅读:
    day11_获取前一条用例的结果(用参数化实现)
    day11_获取前一条用例的结果
    codeforce 1433F
    codeforces 1428 D. Bouncing Boomerangs (贪心)
    codeforces 761C
    codeforces 839C
    codeforces 859C
    codeforces 858C Did you mean... (贪心)
    codeforces 855B
    st表
  • 原文地址:https://www.cnblogs.com/zhongchao666/p/9275494.html
Copyright © 2020-2023  润新知