JS時間對象和遞歸

  • 基礎類型有哪些?復雜類型有哪些?有什么特征?
    一般來說JS的基礎類型主要分為5種,指的是保存在棧內存中的簡單數據段;
  1. 數字:number
  2. 布爾值:true、false
  3. 字符串:string
  4. null: 控制針
  5. underfined:有指針卻未賦值
  • 復雜類型只有object:包括 數組、對象、函數、正則,指的是保存在堆內存中的對象,變量中保存的實際上只是一個指針(坐標),這個指針執行的是內存中的另一個位置,由該位置保存對象。

  • 如下代碼的輸出? 為什么?
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);    //判斷obj1是否等于obj2
console.log(obj1 = obj2);      //將obj2賦值給obj1
console.log(obj1 == obj2);    //再次判斷obj1是否等于obj2

因為復雜類型的特性,兩個對象分別是不同的位置,所以結果為:

false
Object {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()+'-'+ad+'-'+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);

  • 本博客版權歸羞澀的澀和饑人谷所有,轉載請注明出處
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,263評論 0 4
  • JS使用技巧專題 1開發技巧 1.1函數使用 1.1.1函數聲明方式 JS函數的寫法總結 http://blog....
    Kevin_Junbaozi閱讀 1,103評論 0 11
  • 4.17久違的春雨一傾而泄,似皺眉很久的孩子突然止不住淚水。 前所未有的無助和迷茫。 我不知道我自己想要什么。可能...
    清酒姑娘閱讀 318評論 0 0
  • 1. 停車位 瑞典沃爾沃總部有兩千多個停車位,早到的人總是把車停在遠離辦公樓的地方,天天如此。問:“你們的泊位是固...
    37dc9392ece7閱讀 235評論 0 0
  • 有一些話,看你站在什么角度說。如果是自己說出來,那是大度,或是自我安慰;如果換個角度,作為第三者說出來,聽起來還算...
    鈺霏閱讀 852評論 1 2