首頁 > web前端 > js教程 > 主體

關於JS時間對象與遞迴問題

jacklove
發布: 2018-05-21 11:30:24
原創
1364 人瀏覽過

JS時間對象和遞歸在學習中經常會遇到,本篇將對其進行講解。

基礎型別有哪些?複雜類型有哪些?有什麼特徵?
一般來說JS的基礎型別主要分為5種,指的是儲存在堆疊記憶體中的簡單資料段;

數字:number

布林值:true、false

字串:string

null:控制針

underfined:有指標卻未賦值

複雜型別只有object:包含陣列、物件、函數、正則,指的是保存在堆內存中的對象,變數中保存的實際上只是一個指針(坐標),這個指針執行的是內存中的另一個位置,由該位置保存對象。

如下程式碼的輸出? 為什麼?

var obj1 = {a:1, b:2};var obj2 = {a:1, b:2};console.log(obj1 == obj2);    //判斷obj1是否等於obj2console.log(obj1 = obj2);      //將obj2賦值給obj1console.log(obj1 == obj2);    兩個物件分別是不同的位置,所以結果為:falseObject {a: 1, b: 2}true

#程式碼

寫一個函數getIntv,取得從目前時間到指定日期的間隔時間

function getIntv(haha){
  a= Date.now();
  b= Date.parse(haha);
  c= b-a;
  d= Math.floor(c/(1000*60*60*24));
  e= Math.floor((c-d*1000*60*60*24)/(1000*60*60));
  f= Math.floor((c-d*1000*60*60*24-e*1000*60*60)/(1000*60));
  g= Math.floor((c-d*1000*60*60*24-e*1000*60*60-f*1000*60)/1000);  return ("距除夕还有"+d+"天"+e+"小时"+f+"分钟"+g+"秒")
}var str = getIntv("2017-01-27");console.log(str);
登入後複製

把數字日期改成中文日期

function getChsDate(lala){
  num=['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']  var damo = lala.split('-')     
  var b = damo[0].split('')    
 for( var e =0 ;e< damo.length; e++) { 
  for(var i = 0 ;i< b.length ; i++) {  
    for(var f = 0 ;f< num.length ;f++) {   
      if( damo[e] == f.toString() ) {
        damo[e] = num[f]
      }      if( b[i] == f.toString() ) {
        b[i] = num[f]
      }
    }
  }
 }  
  return ( b.join("")+"年"+damo[1]+"月"+damo[2]+"日" )
}var str = getChsDate("2015-11-31")console.log(str)
登入後複製

寫一個函數取得n天前的日期

function getLastNDays(lala) {  var damo = new Date().getTime()-(lala*1000*60*60*24);  var d2 = new Date(damo)  var ad =(d2.getMonth()+1)  console.log(d2.getFullYear()+&#39;-&#39;+ad+&#39;-&#39;+d2.getDate())   
}
 getLastNDays(40);
登入後複製

完善如下程式碼,用於取得執行時間如:

var Runtime = (function(){    var a,b,c;    return {        start: function(){
             a = Date.now();   //获取现在的时间
             console.log(a);
        },        end: function(){
             b = Date.now();    //获取执行后的时间
             console.log(b);
        },        get: function(){ 
             c = b - a;              //两者相减得出执行代码的时间。            
             return (c+"毫秒");        //单位为毫秒
        }
    };
}());
Runtime.start();             
for(var i = 0; i<60000 ;i++ ){         
                                   //这里计算i循环60000次所需要的时间}
Runtime.end();console.log(Runtime.get());
登入後複製

樓梯有200級,每次走1級或2級,從底走到頂一共有多少種走法?用程式碼(遞歸)實現

function fn(sum){  if(sum===1){    return 1;
  }  if(sum===2){    return 2;
  }  return fn(sum-1)+fn(sum-2)
登入後複製

}//樓梯的走法相當於(走一步之後後面的走法) (走兩步之後後面的走法)//走一步或走兩步是條件console.log(fn(200));                 //數值太大,會卡住

寫一個json物件深拷貝的方法,json物件可以多層嵌套,值可以是字元串、數字、布林、json物件中的任意項目

var obj={  sex:18,  vala:"hello",  arr:{    name:"damo"
  }
};function objcopy(obj){  var newobj={};  for(var i in obj){    //遍历对象obj
    if(typeof obj[i]=== "object"){       //如果对象的值为对象
      newobj[i] = objcopy(obj[i])    //将对象赋值为新对象
    }else{
      newobj[i]=obj[i];
    }
  }  return newobj;
}var newobj= objcopy(obj);console.log(newobj)                 //一个新的对象与原对象无关系
登入後複製

寫一個陣列深拷貝的方法,陣列裡的值可以是字串、數字、布林、陣列中的任意項目

var arr=[18, "hello", [2,3,5,6,9],true,];function objcopy(arr){  var newarr=[];  for(var i in arr){    //遍历数组arr
    if( arr[i] instanceof Array){    //条件:如果对象的值为数组
      newarr[i] = objcopy(arr[i])    //将数组内容赋值为新数组
    }else{
      newarr[i]=arr[i];
    }
  }  return newarr;
}var newarr= objcopy(arr);console.log(newarr)                 //一个新的数组与原数组无关系
登入後複製

寫一個深拷貝的方法,拷貝物件以及內部嵌套的值可以是字串、數字、布林、陣列、json物件中的任意項

function   arrcopy(num){   var lala;  if(num instanceof Array){
    lala = [];
  } else{
    lala={};
  }
登入後複製
 for(var key in num){    if(num[key] instanceof Array){
       lala[key] = arrcopy(num[key]);
    }    else{
       lala[key] = num[key];
    }
  }  return lala;
}var lala= arrcopy(arr);
登入後複製

本篇對其進行

相關推薦:

dom物件的innerText和innerHTML有什麼差別?

一些關於JS的基礎問題

#如何用前端js模組化寫require.js

以上是關於JS時間對象與遞迴問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!