成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

湯姆大叔的6道javascript編程題題解

開發(fā) 前端
看湯姆大叔的博文,其中有篇(猛戳這里)的最后有6道編程題,于是我也試試,大家都可以先試試。

看湯姆大叔的博文,其中有篇(猛戳這里)的***有6道編程題,于是我也試試,大家都可以先試試。

湯姆大叔的6道javascript編程題題解

1、找出數(shù)字?jǐn)?shù)組中***的元素(使用Math.max函數(shù))

  1. var a = [123654]; 
  2. var ans = Math.max.apply(null, a); 
  3. console.log(ans);  // 6 

這題很巧妙地用了apply,如果不是數(shù)組,是很多數(shù)字求***值,我們知道可以這樣:

  1. var ans = Math.max(123456); 
  2. console.log(ans); // 6 

而apply的第二個參數(shù)正是一個數(shù)組,都不用進行轉(zhuǎn)換了。

  1. var a = [123654]; 
  2. var ans = eval( 'Math.max(' + a.toString() + ')'); 
  3. console.log(ans); // 6 

還有一種用eval+toString的實現(xiàn):

2、轉(zhuǎn)化一個數(shù)字?jǐn)?shù)組為function數(shù)組(每個function都彈出相應(yīng)的數(shù)字)

  1. var a = [123456]; 
  2. var len = a.length; 
  3. for(var i = 0; i < len; i++) { 
  4.   var num = a[i]; 
  5.   (function(num) { 
  6.     var f = function() { 
  7.       console.log(num); 
  8.     }; 
  9.     a[i] = f; 
  10.   })(num); 
  11.   
  12. for(var i = 0; i < len; i++) 
  13.   a[i](); 
  14. // 1 
  15. // 2 
  16. // 3 
  17. // 4 
  18. // 5 
  19. // 6 

我覺得這跟給n個a標(biāo)簽,彈出相應(yīng)標(biāo)簽對應(yīng)的編號是一個類型的題,用閉包保存變量到內(nèi)存即可。

3、給object數(shù)組進行排序(排序條件是每個元素對象的屬性個數(shù))

  1. var a = { 
  2.   name: 'hanzichi'
  3.   age: 10
  4.   location: 'china' 
  5. }; 
  6.   
  7. var b = { 
  8.   name: 'curry' 
  9. }; 
  10.   
  11. var c = { 
  12.   name: 'kobe'
  13.   sex: 'male' 
  14. }; 
  15.   
  16. Object.prototype.getLength =  function() { 
  17.   var num = 0
  18.   for(var key in this) { 
  19.     if(this.hasOwnProperty(key)) 
  20.       num++; 
  21.   } 
  22.   return num; 
  23. }; 
  24.   
  25. var arr = [a, b, c]; 
  26. arr.sort(function(a, b) { 
  27.   return a.getLength() > b.getLength(); 
  28. }); 
  29. console.log(arr); 

這題不難,數(shù)組排序,當(dāng)然是sort,排序條件是對象的屬性個數(shù),可以寫個函數(shù)計算,注意可能要用hasOwnProperty判斷下。

4、利用JavaScript打印出Fibonacci數(shù)(不使用全局變量)

  1. (function(a, b) { 
  2.   var c = a + b; 
  3.   console.log(c); 
  4.   if(c > 100return
  5.   arguments.callee(b, c); 
  6. })(-11); 

這題沒看明白,是打出斐波那契數(shù)列的前n項么?還是第n項...

  1. function fn(n) { 
  2.   var a = []; 
  3.   a[0] = 0, a[1] = 1
  4.   for(var i = 2; i < n; i++) 
  5.     a[i] = a[i - 1] + a[i - 2]; 
  6.   for(var i = 0; i < n; i++) 
  7.     console.log(a[i]); 
  8.   
  9. fn(5); // 10表示需要的斐波那契數(shù)列個數(shù) 
  10. // 0 
  11. // 1 
  12. // 1 
  13. // 2 
  14. // 3 

不使用全局變量,我把它們寫在函數(shù)里了應(yīng)該算是局部變量了吧,難道這樣就好了?你怎么看?

5、實現(xiàn)如下語法的功能:var a = (5).plus(3).minus(6); //2

  1. Number.prototype.plus = function(a) { 
  2.   return this + a; 
  3. }; 
  4.   
  5. Number.prototype.minus = function(a) { 
  6.   return this - a; 
  7. }; 
  8.   
  9. var a = (5).plus(3).minus(6); 
  10. console.log(a); // 2 

直接在Number對象上加擴展方法即可,傳說中這樣很不好,but我也想不到更好的辦法了...

6、實現(xiàn)如下語法的功能:var a = add(2)(3)(4); //9

  1. function add(a) { 
  2.   var temp = function(b) { 
  3.     return add(a + b); 
  4.   } 
  5.   temp.valueOf = temp.toString = function() { 
  6.     return a; 
  7.   }; 
  8.   return temp; 
  9. var ans = add(2)(3)(4); 
  10. console.log(ans); // 9 

對valueOf和toString的考察,具體可以參考《valueOf和toString》

另看到一種很飄逸的寫法(來自Gaubee):

  1. function add(num){ 
  2.   num += ~~add; 
  3.   add.num = num; 
  4.   return add; 
  5. add.valueOf = add.toString = function(){return add.num}; 
  6. var ans = add(3)(4)(5)(6);  // 18 
  7. alert(ans); 

大家有什么意見建議的歡迎交流指導(dǎo)~

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2015-10-28 13:59:23

湯姆貓源碼ios

2015-07-16 13:45:18

山寨湯姆貓源碼

2009-01-08 21:21:45

程序員筆記

2017-02-28 15:08:08

架構(gòu)微服務(wù)數(shù)據(jù)庫

2023-11-07 08:36:34

JavaScriptJS挑戰(zhàn)

2022-08-12 09:35:36

JavaScript面試

2015-11-02 20:57:00

劉積仁

2020-05-19 20:45:27

MySQLref優(yōu)化器

2018-10-31 11:41:49

Python代碼語言

2024-06-04 14:52:28

2009-06-09 09:07:06

編程語言排行榜JavaScript

2020-09-11 09:10:18

編程程序員開發(fā)

2009-03-10 10:06:33

面試題筆試題微軟

2024-11-28 08:33:16

JavaScrip事件循環(huán)this

2020-10-15 13:29:57

javascript

2009-02-27 10:30:09

面試聯(lián)想智力

2021-06-29 08:29:25

開源程序員github

2022-07-22 09:55:02

Python練手題

2010-09-13 09:18:22

JavaScript模塊模式

2021-12-10 07:47:30

Javascript異步編程
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 999久久久久久久 | 欧美小视频在线观看 | 日韩电影免费在线观看中文字幕 | 国产综合网站 | 一级毛片免费视频 | 日韩一级精品视频在线观看 | 日韩精品福利 | 欧美视频三区 | 精品一区二区三区四区五区 | 国产成人精品午夜视频免费 | 色免费视频| 欧美日韩一二区 | 欧美精品欧美精品系列 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 精品欧美视频 | 久久亚洲天堂 | 欧美网址在线观看 | 久久婷婷香蕉热狠狠综合 | 欧美精品久久 | 91传媒在线播放 | 天天干天天谢 | 国产一区二区自拍 | 欧美日韩中文国产一区发布 | 青青久在线视频 | 欧美日韩久久 | 成人欧美一区二区三区黑人孕妇 | 亚洲精品一区二三区不卡 | a免费视频 | a级片在线观看 | 毛片1 | 亚洲入口| 青娱乐一区二区 | 天天看片天天干 | 欧美黄色一区 | 少妇久久久久 | 免费观看一级毛片 | 在线超碰| 欧洲视频一区二区 | 中文字幕一区在线观看视频 | 99热这里都是精品 | 黄色一级免费观看 |