摘要:有時(shí)我們需要不停的循環(huán)數(shù)組的元素,就像一組旋轉(zhuǎn)的圖片,或者音樂的播放列表。這里告訴你如何使一個(gè)數(shù)組擁有循環(huán)的能力返回當(dāng)前的元素第一次檢查更新第二次檢查更新返回元素增加然后返回新的當(dāng)前元素減少然后返回新的當(dāng)前元素使用取模操作符更優(yōu)雅。
有時(shí)我們需要不停的循環(huán)數(shù)組的元素,就像一組旋轉(zhuǎn)的圖片,或者音樂的播放列表。這里告訴你如何使一個(gè)數(shù)組擁有循環(huán)的能力:
var aList = ["A","B","C","D","E"]; function make_looper( arr ){ arr.loop_idx = 0; // 返回當(dāng)前的元素 arr.current = function(){ if( this.loop_idx < 0 ){// 第一次檢查 this.loop_idx = this.length - 1;// 更新 loop_idx } if( this.loop_idx >= this.length ){// 第二次檢查 this.loop_idx = 0;// 更新 loop_idx } return arr[ this.loop_idx ];//返回元素 }; // 增加 loop_idx 然后返回新的當(dāng)前元素 arr.next = function(){ this.loop_idx++; return this.current(); }; // 減少 loop_idx 然后返回新的當(dāng)前元素 arr.prev = function(){ this.loop_idx--; return this.current(); }; } make_looper( aList); aList.current();// -> A aList.next();// -> B aList.next();// -> C aList.next();// -> D aList.next();// -> E aList.next();// -> A aList.pop() ;// -> E aList.prev();// -> D aList.prev();// -> C aList.prev();// -> B aList.prev();// -> A aList.prev();// -> D
使用?%?( 取模 ) 操作符更優(yōu)雅。取模返回除法的余數(shù) (?2 % 5 = 1?and?5 % 5 = 0):
var aList = ["A","B","C","D","E"]; function make_looper( arr ){ arr.loop_idx = 0; // return current item arr.current = function(){ this.loop_idx = ( this.loop_idx ) % this.length;// 無(wú)需檢查 !! return arr[ this.loop_idx ]; }; // 增加 loop_idx 然后返回新的當(dāng)前元素 arr.next = function(){ this.loop_idx++; return this.current(); }; // 減少 loop_idx 然后返回新的當(dāng)前元素 arr.prev = function(){ this.loop_idx += this.length - 1; return this.current(); }; } make_looper( aList); aList.current();// -> A aList.next();// -> B aList.next();// -> C aList.next();// -> D aList.next();// -> E aList.next();// -> A aList.pop() ;// -> E aList.prev();// -> D aList.prev();// -> C aList.prev();// -> B aList.prev();// -> A aList.prev();// -> D
轉(zhuǎn)載自:http://www.jstips.co
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/80038.html
摘要:傳統(tǒng)個(gè)數(shù)組的嵌套查詢一般通過兩個(gè)循環(huán)體嵌套實(shí)現(xiàn),時(shí)間復(fù)雜度為而通過建立索引對(duì)象的形式的時(shí)間復(fù)雜度為這種犧牲內(nèi)存來(lái)達(dá)到復(fù)雜度降冪的的方法能提高多少性能呢下面是以數(shù)組長(zhǎng)度為數(shù)組為的亂序數(shù)組進(jìn)行測(cè)試的測(cè)試結(jié)果。 傳統(tǒng)2個(gè)數(shù)組的嵌套查詢一般通過兩個(gè)循環(huán)體嵌套實(shí)現(xiàn),時(shí)間復(fù)雜度為:n^2; 而通過建立索引對(duì)象的形式的時(shí)間復(fù)雜度為:n;這種犧牲內(nèi)存來(lái)達(dá)到復(fù)雜度降冪的的方法能提高多少性能呢? 下面是以...
摘要:是個(gè)巨大的資源庫(kù),很多開發(fā)者都知道使用能自動(dòng)打印一份很好格式化的頁(yè)面源代碼的副本使用函數(shù)來(lái)預(yù)防潛在的敏感信息顯示給用戶。理想的錯(cuò)誤報(bào)告應(yīng)該被完全禁用在文件里。優(yōu)化語(yǔ)句,盡量少進(jìn)行。 Celebrate what youve accomplished, but raise the bar a little higher each time you succeed. 如果一個(gè)方法能被靜...
摘要:前言入門教程之列表渲染多層嵌套循環(huán),目前官方的文檔里,主要是一維數(shù)組列表渲染的案例,還是比較簡(jiǎn)單單一,給剛?cè)腴T的童鞋還是無(wú)從入手的感覺。我們也會(huì)不定期發(fā)布一些微信小程序的學(xué)習(xí)教程。需要入群的小伙伴,請(qǐng)加我的個(gè)人微信。 前言 入門教程之列表渲染多層嵌套循環(huán),目前官方的文檔里,主要是一維數(shù)組列表渲染的案例,還是比較簡(jiǎn)單單一,給剛?cè)腴T的童鞋還是無(wú)從入手的感覺。 {{index}}: {...
摘要:前言入門教程之列表渲染多層嵌套循環(huán),目前官方的文檔里,主要是一維數(shù)組列表渲染的案例,還是比較簡(jiǎn)單單一,給剛?cè)腴T的童鞋還是無(wú)從入手的感覺。我們也會(huì)不定期發(fā)布一些微信小程序的學(xué)習(xí)教程。需要入群的小伙伴,請(qǐng)加我的個(gè)人微信。 前言 入門教程之列表渲染多層嵌套循環(huán),目前官方的文檔里,主要是一維數(shù)組列表渲染的案例,還是比較簡(jiǎn)單單一,給剛?cè)腴T的童鞋還是無(wú)從入手的感覺。 {{index}}: {...
閱讀 2919·2021-11-18 10:02
閱讀 2383·2021-09-30 09:47
閱讀 1982·2021-09-27 14:01
閱讀 3242·2021-08-16 11:00
閱讀 3254·2019-08-30 11:06
閱讀 2477·2019-08-29 17:29
閱讀 1639·2019-08-29 13:19
閱讀 522·2019-08-26 13:54