当前位置: 首页 > Web前端 > HTML5

如何优雅地改进程序中的for循环

时间:2023-04-05 11:15:19 HTML5

浼楁墍鍛ㄧ煡锛屽湪鎴戜滑鏃ュ父鐨勭紪鐮佷腑锛屽浜庝竴浜涙暟鎹殑杩唬閬嶅巻锛岄鍏堟兂鍒扮殑灏辨槸for寰幆銆傚彲浠ラ亶鍘嗛暱搴﹀緱鍒板€笺€備緥濡傦細鏈変竴鐐圭紪绋嬪熀纭€鐨勭闉嬪彲浠ュ緢蹇兂鍒颁笂闈㈢殑鍐欐硶銆備笉鐭ラ亾澶у浼氫笉浼氬拰鎴戜竴鏍枫€傚啓for寰幆鐨勬椂鍊欙紝鍔熻兘娌¢棶棰橈紝浣嗘槸鍐欒捣鏉ユ€绘劅瑙夊緢涓嶄紭闆呫€傛瘮濡傚搴旂殑i鍙橀噺锛堟嬁涓婇潰鐨勪緥瀛愶級锛岄渶瑕佺嫭绔嬫帶鍒秈鍙橀噺銆傝繖鏃犵枒浼氬彉寰楀緢楹荤儲锛屽悓鏃朵篃浼氶檷浣庢垜浠啓浠g爜鐨勬晥鐜囥€傛垜浠槸鍚︽湁涓€浜涗紭闆呯殑鏂规硶鏉ュ鐞嗕笂杩版儏鍐碉紵绛旀鏄偗瀹氱殑锛岃繖鍙堝洖鍒颁簡鏈枃鐨勪富棰橈細濡備綍浼橀泤鍦版敼杩沠or寰幆銆傛柟寮忕湅璧锋潵浼橀泤浜嗗緢澶氾紝鍘绘帀浜嗕笉蹇呰鐨勯槦鍒楅暱搴︽瘮杈冨彉閲忕殑瀹氫箟鍜屾帶鍒朵互鍙婇槦鍒楅暱搴︾殑鍒ゆ柇銆侳orEach鏄渶濂界殑浼橀泤瑙e喅鏂规鍚楋紵鏈変粈涔堥棶棰樺悧锛燂紝鐩镐俊鏈夌殑绔ラ瀷鍙兘绛斾笉涓婃潵锛屽氨涓嶄繚鐣欎簡銆傚鏋滈亣鍒伴渶瑕侀亶鍘嗗垪琛ㄥ悗杩斿洖涓€涓鐞嗚繃鐨勬暟缁勭殑鎯呭喌锛屾槸鍚﹀彲浠ョ户缁娇鐢╢orEach鏉ヨ揪鍒扮洰鐨勫憿锛熸垜浠彲鑳芥湁濡備笅鍋氭硶锛氬彲浠ョ湅鍒帮紝绗竴娆″鐞嗘槸澶勭悊瀹屽悗鐩存帴缁欏彉閲忚祴鍊硷紝浣嗘槸forEach寰幆杩斿洖undefined锛岃櫧鐒剁浜屾澶勭悊鏈€缁堢‘瀹炶兘杈惧埌鎴戜滑鐨勭洰鐨勩€傜劧鑰岋紝瀹冨鑷翠簡涓€涓棶棰樷€斺€斿叏灞€鍙橀噺鐨勬薄鏌撱€傚綋鐒舵垜浠篃鍙互鍦ㄥ閮ㄥ畾涔変竴涓暟缁勶紝鐒跺悗灏嗗鐞嗗悗鐨勬暟鎹帹閫佸埌鏂扮殑鏁扮粍涓潵杈惧埌鎴戜滑鐨勭洰鐨勶紝浣嗘槸鏁翠綋鐪嬭捣鏉ヨ繕鏄笉澶紭闆呫€傛湁娌℃湁鍔炴硶鍦ㄤ笉褰卞搷鍘熷鏁版嵁鐨勬儏鍐典笅杩斿洖涓€涓柊鏁扮粍锛熺瓟妗堟槸鑲畾鐨勶紝杩欏氨涓嶅緱涓嶆彁鍔熻兘寮哄ぇ鐨勫嚱鏁板紡缂栫▼锛團unctionalProgramming锛岀畝绉癋P锛変簡銆備粈涔堟槸鍑芥暟寮忕紪绋婩P锛熷張鏄敤鏉ュ仛浠€涔堢殑锛熷嚱鏁板紡缂栫▼锛團unctionalprogramming锛岀畝绉癋P锛夊氨鏄痗odinginfunctions杩欐槸涓€涓瘮杈冪畝娲佺殑瀹樻柟璇存硶锛屼粈涔堟剰鎬濆憿锛熺畝鍗曠偣璇达紝浠婂ぉ浼氱敤鍒板畠鐨勪竴涓牳蹇冩€濇兂锛岀敤鍑芥暟寮忕殑鏂瑰紡澶勭悊闂锛氱函鍑芥暟锛堝浜庣浉鍚岀殑杈撳叆锛屾€绘槸寰楀埌鐩稿悓鐨勮緭鍑猴紝涓嶄細鏈夊壇浣滅敤锛夌湅杩欓噷鏈夋病鏈変竴鐐圭嚎绱煒勶紝濂戒簡锛屽洖褰掓棰橈紝js涓湁娌℃湁绾嚱鏁扮殑鏂规硶锛屽彲浠ヤ紭闆呯殑鏇夸唬for寰幆锛熺浉淇$闉嬩滑浼氭兂鍒癿ap()Map()Map鏂规硶浼氶亶鍘嗕竴娆″師鏁扮粍涓殑姣忎釜鍏冪礌锛岃皟鐢ㄥ洖璋冿紝鏈€鍚庤繑鍥炰竴涓柊鐨勬暟缁勮€屼笉褰卞搷鍘熸暟缁勩€傛垜浠嬁涓婇潰鎻愬埌鐨刦orEach闂涓句釜鏍楀瓙锛屼慨鏀逛竴涓嬶細寰堟槑鏄撅紝鍓嶉潰鐨勫琛屽惊鐜唬鐮侊紝涓€琛屽氨鍙互瀹屾垚锛岀湅璧锋潵浼橀泤寰堝锛屽苟涓旇繑鍥炰竴涓柊鐨勫鐞嗚繃鐨勫厓绱犵粍锛屼笉浼氬鍘熸暟缁勭殑姹℃煋Filter()Filter鏂规硶锛岀畝鍗曠殑璇村氨鏄鏁扮粍杩涜杩囨护鎴栬€呯瓫閫夛紝鐒跺悗杩斿洖涓€涓柊鐨勬暟缁勶紝涓嶄細瀵瑰師鏁扮粍閫犳垚浠讳綍褰卞搷鐪嬪埌杩欓噷锛屾垜浠鍥炲埌Forfor寰幆涓殑鏍楀瓙锛屼娇鐢‵ilter鏂规硶鍙互璁╀唬鐮佹洿浼橀泤鍚楋紵鐜板湪鎴戜滑鏉ョ湅涓€涓嬶細寰堟槑鏄撅紝浣跨敤Filter鏂规硶鍙兘瀹炵幇绗竴姝ャ€傜洰鏍囨槸璁ゝor寰幆涓殑鏉′欢璇彞鍙樺緱浼橀泤锛岄偅鎬庝箞鍔炲憿锛熸垜浠細鍙戠幇Filter鏂规硶浼氳繑鍥炰竴涓柊鐨勬暟缁勶紝閭d箞鎴戜滑鍙互鑱旂郴Map鏂规硶锛屼袱鑰呯殑缁撳悎浼氭摝鍑烘€庢牱鐨勭伀鑺卞憿锛熻嚦姝わ紝浣犳槸涓嶆槸瑙夊緱鐪嬭捣鏉ヨ垝鏈嶅浜嗭紝涔熷鏄撶悊瑙d簡锛岃繖鎵嶆槸鏋佽嚧鐨勪紭闆呮柟妗堛€傞偅涔堥棶棰樻潵浜嗭紝浠€涔堟椂鍊欑敤forEach锛屼粈涔堟椂鍊欑敤map鍛紵forEach鏇撮€傚悎涓嶆敼鍙樺師鏉ョ殑鏁扮粍鏁版嵁锛屽彧鏄鏁扮粍鏁版嵁鍋氫竴浜涘鐞嗭紝鑰宮ap閫傚悎鏀瑰彉鏁版嵁鍊硷紝杩斿洖涓€涓柊鐨勬暟缁勩€傚綋鐒讹紝涓嶅悓鐨勫満鏅湁涓嶅悓鐨勬柟娉曘€傞櫎涓婅堪鍐呭澶栵紝杩欏彧鏄竴涓弬鑰冩墿灞曘€傞櫎浜嗘彁鍒扮殑甯歌鍦烘櫙锛屾垜浠繕浼氶亣鍒板緢澶歠or寰幆鍙互缁х画浼橀泤鐨勫湴鏂癸紝鎵€浠ヤ笉寰椾笉鎻愬埌some鏂规硶锛宔very鏂规硶锛宺educe鏂规硶锛坮educe涔熷睘浜嶧P锛夈€侲very()鍜孲ome()鐜板湪鏈変竴涓満鏅槸褰撳悗绔繑鍥炵殑鍒楄〃涓殑cost浣庝簬0鏃舵樉绀烘彁绀恒€傜粨鍚堜笂闈㈠涔犵殑鏂规硶锛屾垨璁告垜浠細鏈夊涓嬬殑鍋氭硶锛氶櫎浜嗕笂闈㈡瘮杈冪洿鎺ョ殑鏂规硶锛屾湁浜涚闉嬩负浜嗕紭闆呭彲鑳戒細鎯冲埌鐩存帴浣跨敤forEach锛氬洜涓篺orEach鍦ㄥ洖璋冧笂澶勭悊鏁版嵁锛屼娇鐢╞reak璇硶鏄剧劧浼氶€犳垚璇硶閿欒锛屽洜姝わ紝鍗充娇鍘绘帀break锛屼篃闇€瑕侀亶鍘嗘墍鏈夊厓绱狅紝鑰屼富瑙掑氨鍦ㄨ繖閲岋紝some鍜宔very锛歴ome锛氶亶鍘嗘暟缁勫厓绱狅紝鍙鏉′欢涓虹湡锛屽氨鐩存帴杩斿洖true锛屽惁鍒欒繑鍥瀎alseevery锛岀洿鍒伴亶鍘嗙粨鏉燂細閬嶅巻鏁扮粍鍏冪礌锛屽彧瑕佹潯浠朵负鍋囷紝灏辩洿鎺ヨ繑鍥瀎alse锛屽惁鍒欒繑鍥瀟rue锛岀洿鍒伴亶鍘嗙粨鏉熴€傛樉鐒讹紝浠g爜閲忚绠€鍗曞拰浼橀泤寰堝銆俽educe()鏈変簺绔ラ瀷鍙兘瀵箁educe鏂规硶鏈夌偣闄岀敓銆傚畠鏄共浠€涔堢敤鐨勶紵搴旂敤鍦烘櫙鏄粈涔堬紵reduce()鏂规硶鎺ユ敹涓€涓嚱鏁颁綔涓虹疮鍔犲櫒锛坅ccumulator锛夛紝鏁扮粍涓殑姣忎竴涓€硷紙浠庡乏鍒板彸锛夊紑濮嬪噺灏戯紝鏈€鍚庢垚涓轰竴涓€笺€備互涓婁负瀹樻柟璇存硶銆傜畝鍗曠悊瑙o紝灏辨槸閬嶅巻涓€涓垪琛ㄣ€傜涓€娆″彇涓や釜鍏冪礌杩涜澶勭悊寰楀埌涓€涓柊鍊硷紝鐒跺悗鍦ㄤ笅涓€娆″惊鐜腑鍙栨柊鍊煎拰绗笁涓厓绱犺繘琛屽鐞嗭紝浠ユ绫绘帹锛屾渶鍚庡緱鍒颁竴涓€煎苟杩斿洖銆傛枃瀛楀お澶嶆潅锛岀洿鎺ヤ妇渚嬭鏄庯細鏄笉鏄竻鏅板浜嗭紝搴旂敤鏈夊摢浜涗紭闆呭満鏅紵鎴戜笉浼氬湪杩欓噷寮€鐜╃瑧銆傛瘮濡傚悗绔繑鍥炰竴涓璞★紝鎴戜滑鍙渶瑕佽幏鍙栨寚瀹氱殑灞炴€у€煎氨鍙互澶勭悊杩欎釜瀵硅薄锛岃繃婊ゆ帀澶氫綑鐨勫睘鎬с€傛棩甯稿疄璺碉細鍙鍙屽眰寰幆璁╀汉鐪嬭捣鏉ュ鏉備簡寰堝锛屼竴涓嶅皬蹇冨氨瀹规槗鍑洪敊銆傜劧鑰岋紝浣跨敤reduce鏂规硶鍙互寰堜紭闆呫€傜湅瀹岃繖閲岋紝鏄笉鏄寰梤educe浣跨敤鍚庣壒鍒畝娲佷紭闆呭憿锛熷鏋滀綘瑙夊緱涓嶅寮哄ぇ锛岄偅涔堢湅鐪嬩笅闈㈣繖涓牀瀛愶紝浣犲氨鑳芥劅鍙楀埌瀹冪殑寮哄ぇ锛堣繖鏄竴涓澶栫殑璇濋锛屾湁鏃堕棿鍙互鐮旂┒涓€涓嬶級銆傛垜浠粡甯镐細閬囧埌杩欐牱涓€绉嶆儏鍐碉紝鍚庣杩斿洖涓€涓祵濂楀緢娣辩殑瀵硅薄锛岃€屽墠绔湪鑾峰彇杩欎釜澶嶆潅瀵硅薄涓殑鏌愪釜灞炴€ф椂锛岄毦鍏嶈鍒ゆ柇姣忎釜鍊兼槸鍚﹀瓨鍦紝鐒跺悗鐩村埌鎸囧畾鐨勪负姝紝杩欏氨鏄摼鍊奸棶棰橈細鍏跺疄缃戜笂鏈夊緢澶氬叧浜庨摼鍊奸棶棰樼殑瑙f硶銆傚鏋滄槸鏈€浼橀泤鐨勬柟妗堬紝鎴戣寰楁槸鐢╮educe锛岄偅涔堢敤reduce鎬庝箞鍐欏憿锛熺洿鎺ヤ粠涓婂浘璇村埌杩欓噷锛屽浜巉or寰幆鐨勪紭闆咃紝鏈夊緢澶氫紭闆呯殑瑙e喅鏂规锛坙odash绛夛級锛屾柟渚跨畝娲侊紝鍙澶氱敤灏变細浣撲細鍒板畠鐨勫己澶с€傚搱鍝堬紝浠ヤ笂濡傛灉鏈変笉瀵圭殑鍦版柟锛屾杩庡ぇ瀹舵寚鐐广€傛渶鍚庯紝鐪嬪畬涓婇潰鐩镐俊澶у瀵筬or寰幆鏈変簡涓€瀹氱殑浜嗚В锛堟垜鐚滅殑锛夛紝閭d箞鐢ㄤ竴閬撳父瑙佺殑闈㈣瘯棰樹綔涓虹粨灏撅紝璁╁ぇ瀹跺洖杩囧ご鏉ユ€濊€冧竴涓嬩粈涔堟柟娉曟渶濂斤細瀹炵幇涓€涓柟娉曟潵璁$畻瀛楃涓蹭腑姣忎釜瀛楃鍑虹幇鐨勬鏁帮紵鏂规硶灏变笉鍐欎簡锛屽ぇ瀹惰剳娲炰竴涓嬸煓?/p>