摘要:要求只能在指定的位置填寫自己的代碼,本文件里的其他代碼不能修改所有題目都不允許添加全局變量名本文件應(yīng)該能在的里正常執(zhí)行,并輸出結(jié)果代碼最優(yōu)化,效率最高代碼注釋明確答題開始答題結(jié)束執(zhí)行結(jié)果
要求:
1、只能在指定的位置填寫自己的代碼,本文件里的其他代碼不能修改
2、所有題目都不允許添加全局變量名
3、本文件應(yīng)該能在firebug的console里正常執(zhí)行,并輸出結(jié)果
4、代碼最優(yōu)化,效率最高
5、代碼注釋明確
var each = function(obj,fn){ //答題開始 //答題結(jié)束 } try{ var data1 = [4,5,6,7,8,9,10,11,12]; var data2 = { "a": 4, "b": 5, "c": 6 }; console.group(data1); each(data1, function(o){ if( 6 == this ) return true; else if( 8 == this ) return false; console.log(o + ": "" + this + """); }); console.groupEnd(); /*------[執(zhí)行結(jié)果]------ 1: "4" 2: "5" 4: "7" ------------------*/ console.group(data2); each(data2, function(v, n){ if( 5 == this ) return true; console.log(n + ": "" + v + """); }); console.groupEnd(); /*------[執(zhí)行結(jié)果]------ a: "4" c: "6" ------------------*/ }catch(e){ console.error("執(zhí)行出錯,錯誤信息: " + e); }
今天就來解決并且講解下上面這道題
var each = function(obj,fn){ for(var key in obj){ /*首先遍歷下函數(shù)的一個參數(shù)obj,也就是data1和data2.為什么要選擇for,in循環(huán)呢?因?yàn)樗饶鼙闅v數(shù)組data1,又能遍歷字典(json)data2.*/ var value = obj[key]; /*這邊要了解到value,key分別是什么東西。在data1傳入的時候value是數(shù)組中各個元素,key是數(shù)組的索引。在data2傳入的時候value是值(4,5,6),key是屬性(a,b,c).*/ fn1 = fn.bind(value); /*這行代碼為了第一道題所創(chuàng)建.根據(jù)題目console.log(o + ":" "" + this + """);希望輸出的是1:"4" 2:"5" 4:"7"; 從題目輸出的要求可以看出前面是數(shù)組的索引值,雖然對應(yīng)的值好像整體少了1.還可以看出o對應(yīng)索引,this對應(yīng)數(shù)組的元素.因?yàn)閛能直接獲取到(key),this的話需要添加data1才能獲取到,因此我們用了bind()函數(shù),bind函數(shù)第一個參數(shù)就是添加元素到指定函數(shù)里,指向**this**.把value添加到fn里面然后賦值給fn1.*/ if(!isNaN(key)){ /*如果key是數(shù)字的話,執(zhí)行以下代碼*/ var r = fn1(++key); /*這里的fn1就是上面代碼中fn綁定value(data1數(shù)組元素)后的函數(shù),函數(shù)里面?zhèn)髁藗€參數(shù)++key。我們都知道key是索引,但是為什么要前面寫上++呢,細(xì)心的朋友發(fā)現(xiàn)了,因?yàn)榇鸢傅乃饕当葘?shí)際索引值要多1.代碼到這邊,輸出下r試試,r會把所有的索引值和對應(yīng)的data1元素都給輸出,還能發(fā)現(xiàn)除了數(shù)組元素6是返回true和8是返回false,其他都是undefined.*/ if(r === false){ break; /*因?yàn)橄胍獔?zhí)行結(jié)果為1:"4" 2:"5" 4:"7",也就是不要包括數(shù)組元素8和對應(yīng)的索引值+1后面的值.根據(jù)已有的代碼當(dāng)數(shù)組元素是8時返回false,只要當(dāng)r恒等于false就停止后面的輸出.這邊已經(jīng)是滿足第一題的答案要求了,那為什么數(shù)組元素少了個6呢,細(xì)心的朋友已經(jīng)發(fā)現(xiàn)了,因?yàn)楫?dāng)數(shù)組元素等于6時,直接返回true了.*/ } } else{ /*如果key不是數(shù)字,執(zhí)行下面這段代碼.*/ fn1(value,key); /*看console.log(n + ": "" + v + """),想要執(zhí)行的結(jié)果為a:"4",c:"6".左邊的屬性便是key,對應(yīng)參數(shù)n.右邊的屬性值便是value,對應(yīng)參數(shù)v.直接調(diào)用傳入?yún)?shù)就好了.*/ }; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/81661.html
摘要:開始解題創(chuàng)建個空字符串,儲存輸出的內(nèi)容把傳入的參數(shù)用分割,獲取第二部分,也就是后面的字符串創(chuàng)輸出數(shù)組中的元素把號后面的字符串用分割實(shí)際上就分割段,不做分割把前面的字符串用分割,最高允許分割段。 要求:1、只能在指定的位置填寫自己的代碼,本文件里的其他代碼不能修改2、所有題目都不允許添加全局變量名3、本文件應(yīng)該能在firebug的console里正常執(zhí)行,并輸出結(jié)果4、代碼最優(yōu)化,效率最...
摘要:另外,原題還有字?jǐn)?shù)限制的,只有在字?jǐn)?shù)小于并且結(jié)果正確時才可以滿分。插入節(jié)點(diǎn)操作的可以使用和方法,隨便用一個都行。但是,這題有兩個限制條件優(yōu)雅的方式前個元素。 1.有一個長度未知的數(shù)組a,如果它的長度為0就把數(shù)字1添加到數(shù)組里面,否則按照先進(jìn)先出的隊列規(guī)則讓第一個元素出隊。 分析:這道題主要是考核了數(shù)組的隊列方法和棧方法。另外,原題還有字?jǐn)?shù)限制的,只有在字?jǐn)?shù)小于30并且結(jié)果正確時才可以滿...
摘要:另外,原題還有字?jǐn)?shù)限制的,只有在字?jǐn)?shù)小于并且結(jié)果正確時才可以滿分。插入節(jié)點(diǎn)操作的可以使用和方法,隨便用一個都行。但是,這題有兩個限制條件優(yōu)雅的方式前個元素。 1.有一個長度未知的數(shù)組a,如果它的長度為0就把數(shù)字1添加到數(shù)組里面,否則按照先進(jìn)先出的隊列規(guī)則讓第一個元素出隊。 分析:這道題主要是考核了數(shù)組的隊列方法和棧方法。另外,原題還有字?jǐn)?shù)限制的,只有在字?jǐn)?shù)小于30并且結(jié)果正確時才可以滿...
摘要:另外,原題還有字?jǐn)?shù)限制的,只有在字?jǐn)?shù)小于并且結(jié)果正確時才可以滿分。插入節(jié)點(diǎn)操作的可以使用和方法,隨便用一個都行。但是,這題有兩個限制條件優(yōu)雅的方式前個元素。 1.有一個長度未知的數(shù)組a,如果它的長度為0就把數(shù)字1添加到數(shù)組里面,否則按照先進(jìn)先出的隊列規(guī)則讓第一個元素出隊。 分析:這道題主要是考核了數(shù)組的隊列方法和棧方法。另外,原題還有字?jǐn)?shù)限制的,只有在字?jǐn)?shù)小于30并且結(jié)果正確時才可以滿...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個和個經(jīng)典面試題前端開發(fā)面試題如何面試前端工程師很重要個變態(tài)題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
閱讀 1814·2021-09-22 15:54
閱讀 2923·2021-09-01 10:42
閱讀 3442·2019-08-30 15:56
閱讀 1432·2019-08-29 18:46
閱讀 2464·2019-08-29 10:57
閱讀 2703·2019-08-28 17:57
閱讀 3659·2019-08-23 18:14
閱讀 833·2019-08-23 17:03