摘要:從原理就可以知道,的效率是較低的。那如果一定要達到的效果,有沒有其他方法呢答案是肯定的。有一個叫做的方法,能夠把一個數(shù)組反轉(zhuǎn)。比如的性能又如何呢,下面再來測試結(jié)果是可見,性能極高,甚至于沒有額外的消耗,可以放心使用。
從原理就可以知道,unshift的效率是較低的。原因是,它每添加一個元素,都要把現(xiàn)有元素往下移一個位置。但到底效率差異有多大呢?下面來測試一下。
測試環(huán)境的主要硬件:CPU T7100(1.8G);內(nèi)存4G DDR2 667;硬盤5400轉(zhuǎn)。主要軟件:操作系統(tǒng)為Windows 7;瀏覽器為Firefox 3.6.9。測試代碼:
var arr = [ ], s = +new Date; // push性能測試 for (var i = 0; i < 50000; i++) { arr.push(i); } console.log(+new Date - s); s = +new Date; arr = [ ]; // unshift性能測試 for (var i = 0; i < 50000; i++) { arr.unshift(i); } console.log(+new Date - s);
這段代碼分別執(zhí)行了50000次push和unshift操作,運行一次以后,得出結(jié)果:
12
1152
可見,unshift比push要慢差不多100倍!因此,平時還是要慎用unshift,特別是對大數(shù)組。那如果一定要達到unshift的效果,有沒有其他方法呢?答案是肯定的。
Array有一個叫做reverse的方法,能夠把一個數(shù)組反轉(zhuǎn)。先把要放進數(shù)組的元素用push添加,再執(zhí)行一次reverse,就達到了unshift的效果。比如:
for (var i = 0; i < 50000; i++) { arr.push(i); } arr.reverse(); //reverse的性能又如何呢,下面再來測試: var arr = [ ], s = +new Date; for (var i = 0; i < 50000; i++) { arr.push(i); } arr.reverse(); console.log(+new Date - s);
結(jié)果是:
12
可見,reverse性能極高,甚至于沒有額外的消耗,可以放心使用。
當你的才華撐不起你的野心的時候、請潛下心、低下頭、好好學習、
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97280.html
摘要:數(shù)組則在對象監(jiān)聽之外額外在數(shù)組對象上的原型鏈上加一層原型對象來攔截掉等方法然后在執(zhí)行預設的回調(diào)函數(shù)最后本文有什么不完善的地方或者流程圖有待改進的地方敬請斧正。 前言 隨著前端交互復雜度的提升,各類框架如angular,react,vue等也層出不窮,這些框架一個比較重要的技術點就是數(shù)據(jù)綁定。數(shù)據(jù)的監(jiān)聽有較多的實現(xiàn)方案,本文將粗略的描述一番,并對其中一個兼容性較好的深入分析。 實現(xiàn)方案簡...
摘要:刪除刪除數(shù)組元素刪除第一個元素可以看出,通過運算符刪除數(shù)組元素也有一些注意的地方。數(shù)組方法也可以用于刪除數(shù)組元素,后面講解。該方法對數(shù)組的每一項運行給定的函數(shù),返回該函數(shù)會返回的項組成的數(shù)組。 結(jié)合《javascript高級程序設計》《javascript權(quán)威指南》《javascript語言精粹》做的一篇關于Array對象的全面解析。分為兩篇:基礎篇和擴展應用篇。 1.概念及...
摘要:沒有循環(huán)循環(huán)次四屬性屬性屬性表示數(shù)組元素的數(shù)量,的數(shù)組元素并不是連續(xù)的,有些索引的位置可能沒有元素,所以屬性并不能真正表示元素的數(shù)量,其值等于數(shù)組最大索引。 一、JS沒有真正的數(shù)組 像C++,Java這些編程語言中數(shù)組元素分配的內(nèi)存都是連續(xù),這有利于性能提升,但是JS的數(shù)組不是這樣的。它使用對象模擬數(shù)組,即對象屬性為數(shù)字,并含有l(wèi)ength屬性。所以JS數(shù)組對象的內(nèi)存不是連續(xù)的,同一般...
摘要:另外,原題還有字數(shù)限制的,只有在字數(shù)小于并且結(jié)果正確時才可以滿分。插入節(jié)點操作的可以使用和方法,隨便用一個都行。但是,這題有兩個限制條件優(yōu)雅的方式前個元素。 1.有一個長度未知的數(shù)組a,如果它的長度為0就把數(shù)字1添加到數(shù)組里面,否則按照先進先出的隊列規(guī)則讓第一個元素出隊。 分析:這道題主要是考核了數(shù)組的隊列方法和棧方法。另外,原題還有字數(shù)限制的,只有在字數(shù)小于30并且結(jié)果正確時才可以滿...
摘要:另外,原題還有字數(shù)限制的,只有在字數(shù)小于并且結(jié)果正確時才可以滿分。插入節(jié)點操作的可以使用和方法,隨便用一個都行。但是,這題有兩個限制條件優(yōu)雅的方式前個元素。 1.有一個長度未知的數(shù)組a,如果它的長度為0就把數(shù)字1添加到數(shù)組里面,否則按照先進先出的隊列規(guī)則讓第一個元素出隊。 分析:這道題主要是考核了數(shù)組的隊列方法和棧方法。另外,原題還有字數(shù)限制的,只有在字數(shù)小于30并且結(jié)果正確時才可以滿...
閱讀 2941·2021-11-17 09:33
閱讀 1706·2021-10-12 10:13
閱讀 2532·2021-09-22 15:48
閱讀 2397·2019-08-29 17:19
閱讀 2611·2019-08-26 11:50
閱讀 1593·2019-08-26 10:37
閱讀 1756·2019-08-23 16:54
閱讀 2948·2019-08-23 14:14