JavaScript02
个人总结,不足请原谅,如需完整总结或技术探讨请私信;不胜感谢
* ###示例
* 提示用户如如整数:正整数
var num=parseInt(prompt("请输入一个整数"));
if(num){
var i=1;
while(num>=10){
num=num/10;
i++;
}
console.log("这个数字是"+i+"位数")
}else if(num==0){
console.log("");
}else{
console.log("输入有误")
}
* ###for循环
* ####语法
for(var i=0;i<length;i++){
循环体
}
* ####**执行过程**
* 首先执行第一个表达式,然后执行第二个表达式,表达式不成立则循环不执行,如果成立,则执行循环体,再执行i++
* ####**案例**
* #####求1-100之间所有数字的和
var sum=0;
for(var i=1;i<=100;i++){
sum+=i;
}
console.log(sum)
* #####求1-100之间所有奇数的和
var addSum = 0;
var evenSum = 0;
for(var i=0;i<=100;i++){
if(i%2!=0){
addSum+=i;
}else{
evenSum+=i;
}
}
console.log(addSum,evenSum);
* #####10000本金,0.03利率,五年后获得本金多少
var money = 10000;//本金
var rate = 0.03;//利率
for(var i=0;i<5;i++){
money+=money * rate;
}
console.log(money);
* #####求斐波那契数列中第七个数字
var num1 = 1;
var num2 = 1;
var sum = 0;
for(var i = 3;i <= 12;i++){
sum=num1+num2;
num1=num2;
num2=sum;
}
console.log(sum);
* #####1-5数字和
var sum =0;
for(var i=1;i<=5;i++){
sum+=i;
}
console.log(sum);
* #####三角形
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
document.write("★")
}
document.write("<br>")
}
* #####乘法表
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
document.write(j+"*"+i+"="+j*i+" ")
}
document.write("<br>")
}
* #####乘法表(table)
document.write("<table broder='2'>");
for(var i=1;i<=9;i++){
document.write("<tr>");
for(var j=1;j<=i;j++){
document.write("<td>");
document.write(j+"*"+i+"="+j*i+" ")
document.write("</td>");
}
document.write("</tr>");
}
document.write("</table>");
* #####计算出1-100之间所有不能被3整除的的整数的和大于或等于2000的数字
var sum = 0;
for(var i=1;i<=100;i++){
if(i%3!=0){
sum+=i;
}
if(sum>=2000){
console.log(i+"和是"+sum);
break;
}
}
* ###数组
* ####概念
* 一组数据的组合
* ####**数组作用**
* 可以一次性存储多个数据(类型可以相同也可以不同)
* ####**数组的元素**
* 数组中存储的每个数据
* ####**设置和获取数组元素的值**
* 通过索引(下表)的方式来设置和获取数组中元素的值
* ####**数组的定义**:
var 变量=[];//字面量方式定义数组
var 变量=new Array();//构造函数定义数组
var 变量=new Array(数字);//括号中的数字是数组中的元素个数
* ####**数组的长度**
* 数组中的元素个数
* ####**注意**:
* JS中数组的左右元素的值都可以直接输出(其他语言中数组的值都是要通过循环一个个的显示)
* JS中数组的长度是可以改变的
* 数组的元素如果可以直接输出,那么每个元素(每个值)都是由逗号隔开
* 数组的索引是0开始,到元素的个数(数组的长度)减1
* ####**数组的长度**
* `数组名.length`
* ####**数组元素获取**
* `数组名[索引]`
console.log(arr[0])//数组名[索引值] 可以获取对应索引值的元素
console.log(arr[1])//数组名[索引值] 可以获取对应索引值的元素
console.log(arr[2])//数组名[索引值] 可以获取对应索引值的元素
arr[0] = "aaa";
arr[1] = "aaa";
arr[2] = "aaa";
console.log(arr);
* ####**数组元素的遍历**
* 一个一个的操作。(借助for循环)
for(var i=0;i<arr.length;i++){
//for循环中的arr[i]代表的就是数组中的每一个元素
arr[i] += 123;
}
console.log(arr);
* ####**拓展(数组中有很多方法)**
arr.push("诸葛亮");//在数组的末尾添加元素
console.log(arr);
arr.pop();//在数组的末尾删除元素
console.log(arr);
arr.unshift("诸葛亮");//在数组的前面加元素
console.log(arr);
arr.shift();//在数组的前面删除元素
console.log(arr);
//join();concat();split();indexOf();sort();reverse()......
* ####**案例**
#####* 求数组中的和,平均值,最大值,最小值
var arr=[10,20,30,40,50];
var sum=0;//求和
var avg=0;//平均值
var max=Number.MIN_VALUE;//最大值,初始存放最小值
var min=Number.MAX_VALUE;//最小值,初始存放最大值
for(var i=0;i<arr.length;i++){
sum+=arr[i];//求和
if(max<arr[i]){
max=arr[i];
}
if(min>arr[i]){
min=arr[i];
}
}
console.log("最大值是"+max+";最小值是"+min+";和是"+sum+";平均值是"+sum/arr.length)
#####* 将数组的每个字符串元素用”|”竖线的方式隔开,并输出
var str="";//用来存储最终字符串
var arr=[10,20,30,40,50];
for(var i=0;i<arr.length;i++){
str+=arr[i]+"|"
}
console.log(str+arr[arr.length-1]);
*
*
//第二种
console.log([10,20,30].join("|"));
#####* 去掉数组中的0,产生新数组
var arr=[10,20,0,40,50];
var arr2 = [];
var j=0;
for(var i=0;i<arr.length;i++){
if(arr[i]!=0){
arr2[j]=arr[i];//或者arr2[arr2.length]=arr[i]不用j变量
j++;
}
}
#####* 实现反转数组
//第一种
var num=[1,2,3,4,5]
for(var i=num.length-1;i>=0;i--){
console.log(num[i]);
}
*
*
//第二种
var num=[1,2,3,4,5];
for(var i=0;i<num.length/2;i++){
var temp=num[i];
num[i]=num[num.length-1-i];
num[num.length-1-i]=temp;
}
console.log(num);
#####* 根据输入班级人数依次输入每个人成绩,求总成绩和平均值
var sum =0;//存储总成绩
var person = parseInt (prompt("请输入班级人数:"));
var scores =[];//存储每个人的成绩
for(var i=0;i<person;i++){
//提示用户输入成绩,并存储在数组中
scores[scores.length]=parseInt(prompt("请输入第"+(i+1)+"个同学的成绩"));
sum+=scores[i];//从数组中取出成绩求和
}
for(var i=0;i<scores.length;i++){
console.log("第"+(i+1)+"个人的成绩是"+scores[i]);
}
console.log("总成绩是:"+(sum)+"分,平均成绩是:"+sum/person+"分");
#####* 随即生成10个1-100内的非重复数字放入数组中。(调用系统方法)
* 随机数产生`Math.random()`---伪随机数0-1之间
`console.log(parseInt(Math.random()*100+1));//1-100随机数`
`arr.indexOf(num)//数组中是否有num这个数,有则返回索引值,没有返回-1`
var arr = [];//存储随机数的数组
while(true){//或者while(arr.length<10)
var num = parseInt(Math.random()*100+1)//1-100随机数
if(arr.indexOf(num) == -1){//判断数组中有没有这个数字
arr[arr.length]=num;
}
if(arr.length==10){
break;
}
}
console.log(arr);
#####* 求一个工资数组中,员工的最高工资、最低工资、平均工资
var arr = [2000,2444,5555,6666,7777,8888];
var sum = 0;
var max =[0];
var min = [0];
for(var i = 0;i<arr.length;i++){
sum+=arr[i];
if(max<arr[i]){
max=arr[i];
}
if(min>arr[i]){
min=arr[i]
}
}
#####* 两个数组{ “a”,“b”,“c”,“d”,“e”}和{ “d”, “e”, “f”, “g”, “h” },把这两个数组去除重复项合并成一个。
var arr1=["a","b","c","d","e"];
var arr2=["c","d","e","f","g","h"];
for(var i=0;i<arr1.length;i++){
if(arr2.indexOf(arr1[i])==-1){
arr2[arr2.length]=arr1[i];
}
}
console.log(arr2);
* ###冒泡排序:一组数从大到小或从小到大排序
比较轮数|10|20|30|40|50|每一轮比较次数|.length-1-i
-|-|-|-|-|-|-
第一轮|20|30|40|50|10|比较4次|.length-1-0
第二轮|30|40|50|20|10|比较3次|.length-1-1
第三轮|40|50|30|20|10|比较2次|.length-1-2
第四轮|50|40|30|20|10|比较1次|.length-1-3
var arr=[20,10,40,50,30];
//每轮比较的次数
for(var i=0;i<arr.length-1;i++){
//每一轮比较的次数
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]<arr[j+1]){
var temp=arr[j];
arr [j]=arr [j+1];
arr [j+1]=temp;
}
}
}
console.log(arr);
* ###函数
* ####概念
* 把一段重复的代码封装起来,在需要的时候调用函数即可
* ####**作用**
* 代码的重用
* ####**函数名**
* 遵循驼峰命名法(切记:目前写函数名,首字母不允许用大写字母)
* ####**定义**
function 函数名{
代码
}
*
*
function panDuan(num1){
var p =/^[a-z]+$/;
console.log(p.test(num1))
}
* ####**调用**
函数名();
*
*
panDuan("dfsf")