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

1、找出數字數組中最大的元素(使用Math.max函數)

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

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

1
2
var?ans = Math.max(1, 2, 3, 4, 5, 6);
console.log(ans);?// 6

  而apply的第二個參數正是一個數組,都不用進行轉換了。

  還有一種用eval+toString的實現:

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

2、轉化一個數字數組為function數組(每個function都彈出相應的數字)

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

  我覺得這跟給n個a標簽,彈出相應標簽對應的編號是一個類型的題,用閉包保存變量到內存即可。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

?

轉載于:https://www.cnblogs.com/JohnLiang/p/5715771.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 多線程之幾個基本問題

Android中的進程和線程 Android中的一個應用程序一般就對應著一個進程&#xff0c;多進程的情況可以參考Android 多進程通信之幾個基本問題 Android中更常見的是多線程的情況&#xff0c;一個應用程序中一般都有包括UI線程等多個線程。Android中規定網絡訪問必須在子線程中進行…

Web下的整體測試

隨著Internet的日益普及&#xff0c;現在基于B/S結構的大型應用越來越多&#xff0c;可如何對這些應用進行測試成為日益迫切的問題。有許多測試人員來信問我B/S的測試如何做&#xff0c;由于工作較繁忙&#xff0c;對大家提出的問題也是頭痛醫頭腳痛醫腳&#xff0c;沒有對WEB的…

用計算機算算術平方根順序是ON然后是什么,第2課時用計算器求一個正數的算術平方根.ppt...

1.比較下列各組數的大小&#xff1a;(1) 與(2) 與 8依次按鍵顯示&#xff1a;1.732 050 808例3 小麗想用一塊面積為400 cm2的正方形紙片&#xff0c;沿著邊的方向剪出一塊面積為300 cm2的長方形紙片&#xff0c;使它的長寬之比為3:2&#xff0e;她不知能否裁得出來&#xff0c;…

MySQL 命令

版權聲明&#xff1a;本文首發 http://asing1elife.com &#xff0c;轉載請注明出處。 https://blog.csdn.net/asing1elife/article/details/82892834 MySQL 一些常見命令 更多精彩 更多技術博客&#xff0c;請移步 asing1elife’s blog 查看版本號 mysql -V重啟/啟動/停止 mys…

Bookshelf 2 簡單DFS

鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/993/C來源&#xff1a;牛客網 題目描述 Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top.FJ…

一步一步SharePoint 2007之五:向網站中添加一個子網站

一步一步SharePoint 2007之五&#xff1a;向網站中添加一個子網站摘要感受完看到成果的激動&#xff0c;感受完鄰家女孩的漂亮、可愛和端莊&#xff0c;不要停止&#xff0c;來&#xff0c;讓我們一起來動手打造心目中的完美女神吧&#xff01;本篇文章將介紹如何向一個網站中添…

微型計算機系統分為哪幾個層次,計算機系統分為哪4層?

滿意答案al053192014.06.23采納率&#xff1a;49% 等級&#xff1a;12已幫助&#xff1a;7516人第一層&#xff1a;物理層(PhysicalLayer)&#xff0c;規定通信設備的機械的、電氣的、功能的和過程的特性&#xff0c;用以建立、維護和拆除物理鏈路連接。具體地講&#xff0c…

ASP.NET Core 基礎教程 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

原文:ASP.NET Core 基礎教程 - ASP.NET Core 基礎教程 - 簡單教程&#xff0c;簡單編程 ASP.NET Core 是對 ASP.NET 有重大意義的一次重新設計。本章節我們將介紹 ASP.NET Core 中的一些新的概念和它們是如何幫助我們開發現代化的 Web 應用程序 盡管 ASP.NET Core 是跨平臺的&a…

參數初始化

通過以下形式進行參數初始化 self.fc nn.Linear(n_head * d_v, d_model) nn.init.xavier_normal_(self.fc.weight) 轉載于:https://www.cnblogs.com/yeran/p/11197047.html

使用input type=file 上傳文件時需注意

在asp.net的中使用<input typefile />控件上傳文件對文件的大小有限制,默認情況下大概在4m左右,如果上傳再大的文件時就會出頁面無法顯示的錯誤.修改web.config文件中的參數可以設置該控件上傳文件的大小,web.config中配置如下:在<system.web>節點下增加"<…

html模板 循環里if,django模板里循環變量table里想要兩個一行如何控制

2016-8-3 周三做項目時遇到的問題&#xff1a;每個div由循環變量輸出&#xff1a;{% for key,value in formextenddetail %}{{ key }}{{ value }}{% endfor %}但是我想兩個div一行&#xff0c;使用...這種樣子因為我負責的是前端&#xff0c;views這些不是很熟悉&#xff0c;想…

ASP.NET Core Windows 環境配置 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

原文:ASP.NET Core Windows 環境配置 - ASP.NET Core 基礎教程 - 簡單教程&#xff0c;簡單編程 ASP.NET Core Windows 環境配置 ASP.NET Core 是對 ASP.NET 有重大意義的一次重新設計。本章節我們將介紹 ASP.NET Core 中的一些新的概念和它們是如何幫助我們開發現代化的 Web 應…

Prim算法求最小生成樹

給定一個n個點m條邊的無向圖&#xff0c;圖中可能存在重邊和自環&#xff0c;邊權可能為負數。 求最小生成樹的樹邊權重之和&#xff0c;如果最小生成樹不存在則輸出impossible。 給定一張邊帶權的無向圖G(V, E)&#xff0c;其中V表示圖中點的集合&#xff0c;E表示圖中邊的集合…

用installshield打包的asp.net程序

現在需要打包一個asp.net程序&#xff0c;具體要求如下&#xff1a;1、動態建立web虛擬目錄或web站點&#xff0c;并保存至web.config文件相關字段中。2、動態建立ftp目錄&#xff0c;并保存至web.config文件相關字段中。3、動態建立數據庫聯接類型sql或oracle&#xff0c;對sq…

合肥工業大學計算機學院王院長,王青山(合肥工業大學教授)_百度百科

王青山(合肥工業大學教授)語音編輯鎖定討論上傳視頻本詞條缺少概述圖&#xff0c;補充相關內容使詞條更完整&#xff0c;還能快速升級&#xff0c;趕緊來編輯吧&#xff01;王青山&#xff0c;中國漢族人&#xff0c;合肥工業大學教授&#xff0c;現任中國計算機學會、ACM、IEE…

go 中gcc 編譯問題(gcc.exe fatal error no input files compilation terminated)

2019獨角獸企業重金招聘Python工程師標準>>> 問題背景 在windows 中編譯 go 的pipe時由于pipe依賴sqlite&#xff0c;需要通過cgo進行編譯。出現如下異常 gcc.exe fatal error no input files compilation terminated 問題分析 由于 windows中缺少c 的編譯環境 解決…

35歲以前把下面十件事做好

35歲是青春的后期&#xff0c;35歲以后是收獲的季節&#xff0c;如果你沒有資格說這句話&#xff0c;你將會憎恨自己。所以在35歲以前&#xff0c;在爛漫蓬勃的青春年華里&#xff0c;你最好把下面十件事做好&#xff1a; 第一&#xff0c;學會本行業所需要的一切知識并有所發展…

XCode 10 升級問題總結

一、 library not found for -lstdc.6.0.9 xcode 10 中刪除了內置 libstdc.6.0.9.tbd&#xff0c;工程中一些SDK依賴這個庫&#xff0c;需要把xcode 9.4 的libstdc.6.0.9.tbd 添加到xcode中&#xff0c;重啟xcode。 libstdc.6.0.9.tbd 的下載地址&#xff1a;libstdc.6.0.9 真機…

重心轉移

做了好些時候的題了&#xff0c;發現做題對身體的摧殘比普通的寫代碼還要重的多&#xff0c;為了我的眼睛&#xff0c;還是不要那么賣命的做ACM了&#xff0c;反正這個假期還算是比較有收獲。而且&#xff0c;在沒有指導老師的幫助下做難題&#xff0c;根本就是一條艱巨異常的路…

ArcEngine開發體驗(附許可)

ArcGIS Engine Developer Guide ArcGIS9.0開發文檔《Engine_Developers_Guide.pdf》376 &#xff0c;花了兩三天看完了。guide特點&#xff1a;1 guide里面的基礎性的東西很多&#xff0c;涉及com開發應用&#xff0c;開發語言&#xff0c;環境和ao架構介紹的內容2 介紹.net開發…