首頁 >web前端 >js教程 >介紹JS入門小案例

介紹JS入門小案例

jacklove
jacklove原創
2018-06-15 15:23:151604瀏覽

計算第幾天?

1,年份算是否是閏年,確認2月份的天數
2,得到每個月的天數,可以放數組裡
3,根據月份得到當前月份的天數
4,依日期加3得到的天數就ok了。

function isLeapYr(yr) {
    //判断闰年
    return (yr % 4 === 0 && yr % 100 !== 0) || (yr % 100 === 0 && yr % 400 === 0);
}function count(y, m, d) {
    var mdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];    var mSum = 0;    var sum = 0;    //如果是闰年的话,那么2月份就应该有29天
    isLeapYr(y) ? mdays[1] = 29 : mdays[1];    //计算该月份之前的总天数,比如m=3,那么就计算1和2月的总天数
    for (var i = 0; i < m - 1; i++) {
        mSum += mdays[i];
    }    //加上当月天数
    sum = mSum + d;    return sum;
}
 //弹出年、月、日输入框,声明年鱼儿,并赋值
    var y =parseInt(prompt("请输入你的出生年份"));    var m = parseInt(prompt("请输入你的出生月份"));    var d =parseInt(prompt("请输入你的出生日期"));    //月
    //求各月份数字之和
    var getMonth=new Array(31,28,31,30,31,30,31,31,30,31,30);    var sum1=0,i;    for(i=0;i<m-1;i++){
        sum1+=getMonth[i]
        }    //年
    //判断年是否为闰年,是且大于2月份加一
        if(( y%400 ==0||(y % 4 == 0&& y%100 !=0))&& m > 2){
            sum=sum1 + d +1;
            document.write("该天为一年中的第"+sum+"天");
        }else{
            sum=sum1+d;
            document.write("该天为一年中的第"+sum+"天");
        }

利用時間函數進行計算

var now = new Date();//输入日期以今日为例var NewYearsDay = new Date(now.getFullYear(), 0, 0, 0, 0, 0);//该年第一天console.log((now.getTime()-NewYearsDay.getTime())/86400000>>>0)//算出两者的时间戳之差就是时间差的微秒数  再用时间差除以天的微秒数86400000 取整 就是第几天
var endDate = new Date(y, m-1, d),
    startDate = new Date(y, 0, 0),
    days = (endDate - startDate) / 1000 / 60 / 60 / 24;
document.write("该天为一年中的第"+ days +"天");

JS實現階乘

//while循环实现function calNum(n) {
    var product = 1;    while(n > 1){//1*5*4*3*2,1*n*(n-1)*(n-2)*...*2
        product *= n;
        n--;
    }    return product;
}
console.log(calNum(5))
//for循环实现
   function calNum(n){
        var a = 1, str = &#39;1*&#39;;        for (var i = 2; i <= n; i++) {            str += i + &#39;*&#39;;
            a *= i;
        }        str = str.substr(0,str.length-1);        return str + &#39;=&#39; +a;
    }
    console.log(calNum(5));

判斷素數

var prime = function(len){
    var i,j;
    var arr = [];  for(i = 1; i < len; i++){
    for(j=2; j < i; j++){  
      if(i%j === 0) {
         break;
      }
    }    if(i <= j && i !=1){
      arr.push(i);
    }
  }  return arr;
};console.log(prime(100));

js斐波那契數列求和

遞歸演算法

時間複雜度為O(2^n),空間複雜度為O(n)

 function recurFib(n) {
  if (n < 2) {    return n;
  }  else {    return recurFib(n-1) + recurFib(n-2);
  }
 }
  alert(recurFib(10));//将显示55

動態規劃

##時間複雜度為O( n),空間複雜度為O(n)

  function dynFib(n) {     var res = [1,1];  
    if (n == 1 || n == 2) {      return 1;
    }      for (var i = 2; i < n; i++) {        val[i] = val[i-1] + val[i-2];
      }      return val[n-1];
  }
  alert(dynFib(10));//将显示55

迭代法

時間複雜度為O(n),空間複雜度為O(1)

 function iterFib(n){
  var last=1;  var nextlast=1;  var result=1;  for(var i=2;i<n;i++){
    result=last+nextlast;
    nextlast=last;
    last=result;
  }  return result;
 }
 alert(iterFib(10));//将显示55

質數

function foo(n){  
  var a=[],state=0;  
  for(var i=2;i<n;i++){  
    var sqrt_i = Math.sqrt(i);  
    if(i%sqrt_i===0){  
      continue;  
    }  
    for(var j=2;j<sqrt_i;j++){  
      if(i%j===0){  
        state=1;  
        break;  
      }else{  
        state=0;  
      }  
    }  
   if(state===0){  
     a.push(i);  
   }  
  }  
  console.log(a);  
}  
foo(100)

本文解釋了JS入門小案例,更多相關內容請關注php中文網。

相關推薦:

透過js實作流程動態顯示

#particlesJS使用簡介相關內容

JS中運算子i 與i的詳細分析


#

以上是介紹JS入門小案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn