如何從效能方面選擇for,map和forEach?

時間 2021-05-06 17:01:05

1樓:Shawn

map, 如果利用不到返回的新陣列, 絕對不要用, 會顯得你編碼不經大腦, 無意義的賣弄

forEach, 如果利用不到閉包的特性或 thisValue, 就不要用了, 所謂可讀性的理由不充分, 用 for of 可讀性更好. 效能是一方面考慮, 有經驗的工程師會養成高效能的習慣, 而不是處處留心. 剩下的理由就是無意義的賣弄.

如果上面有看不懂的地方, 說明你不需要用上面的這些東西, 就用 for, for of(限TypeScript) 好了, 最不濟考慮到 break continue label 特性, 也建議用 for

如無必要, 勿增實體,奧卡姆剃刀

效能測試當然找jsperf啦

for vs forEach · jsPerf

可以看到這個系列被各種修訂達到634次, 並且還有歷史不同瀏覽器執行速度的差異

基本上 for 比 forEach 快2~10倍

2樓:tim

我都是出於相容ie才用的for

為了效能用for?? 拜託那種10年前的瀏覽器上,你用js優化到死了效能也是比現代瀏覽器差不止一星半點的

出於效能考慮for foreach map的選擇是有問題的應該出於專案實際需求的相容性去考慮for

foreach map

然後用能滿足需求的最新的方法才是正確的選擇和考慮。

3樓:[已重置]

我從使用的角度回答作為對其它答案的補充 /捂臉map並不是讓你用來做遍歷的而是做對映的。

forEach這個才是用來遍歷陣列的

for 非陣列或者 forEach滿足不了的情況下使用

4樓:給劍純道歉

for 應該是最快的,但是這個速度沒什麼意義,你不可能在瀏覽器裡處理太大量的資料,所以我用 map,僅僅是因為這玩意看起來可讀性更強,更好寫而已。

5樓:2gua

一般從各家語言通用角度講,for是最快的,是語言基礎的原生實現。而forEach之流往往是包裹for的語法糖,效能肯定不如for。

6樓:黑貓

很多初學者總會陷入過分追求效能的誤區,而忽略了語義和可讀性。

如果只談效能,顯然是 for > forEach > map,為什麼 for 的效能比較好?讀一下 forEach 和 map 的規範就知道了。map 會返回乙個等長陣列,forEach 不會,所以 forEach 大於 map。

但是哪個快和應該使用哪個,並不應該劃等號。

如果你需要將陣列按照某種規則對映為另乙個陣列,就應該用 map。

如果你需要進行簡單的遍歷,用 forEach 或者 for of。

如果你需要對迭代器進行遍歷,用 for of.

如果你需要過濾出符合條件的項,用 filter.

如果你需要先按照規則對映為新陣列,再根據條件過濾,那就用乙個 map 加乙個 filter。

不要擔心這樣會慢,你那點資料量瀏覽器根本不 care。

如果你真的需要考慮效能,或者有 break 的需求,就用 for 吧。但是如果真的到了這一步,你應該不會來問這個問題。

另外你的第乙個 test case 顯然是不合理的,就不解讀了。

7樓:余博倫

那我以後就都用for啦(誤)~跑分並不能決定什麼……

(貌似我電腦比題主慢100倍)

額,數學不好數不過來0

這麼看的話,我的電腦貌似比題主快10倍(不存在的)然後也不存在Node比Chrome快10倍的情況。

如何選擇潛水考證機構?從哪幾個方面去了解這家機構的實力?

Arthur Guo 就看這個機構每年的發證量,就發證數量大實力就強,反之就差。初級證書,培訓內容都差不多,但同樣的技巧完成要求卻不一樣,導致拿證難度可能不同。難度越大質量越高。 小小小王 我個人的方案是直接找五星潛店,然後再在網上按照潛店的名字找各種評價,對比下。但是就算做足了這些也會掉進坑里。因...

不談clearlove,如何從個人方面評價明凱這個人

RaffaelloLee 都是對比出來的不說拿他和S4 S5時代的人比和UZI比至少我是更喜歡UZI的談人品啥的老實說這裡沒幾個人跟他有過接觸但從採訪的只言片語中感受不到他人品的閃光點反而只聽到空口大話 不管喜歡還是黑只要知道lpl001號選手叫做明凱 ID clearlove 這就足夠了吧反之為什...

如何備考專公升本?從什麼方面下手?

百大教育 明確目標,打好基礎,如果基礎不好的可以考慮選擇機構學習,放鬆心態,心態固然是最重要的也是最影響學習效率的,所以不要有太大壓力,也不必焦慮。 精英專公升本 專公升本備考,說一千道一萬,都只是為了成功考上本科。備考計畫固然重要,相信你也能針對自己的學習基礎,參考前人的計畫作出自己的備考規劃,但...