JavaScript常見集合操作


JavaScript常見集合操作


集合的遍歷

FOR循環(效率最高)

  • 優點:JavaScript最普遍的for循環,執行效率最高
  • 缺點:無法遍歷對象
for(let i=0;i<array.length,i++){ //operation } 

FOR…IN循環(效率較低)

  • 優點:唯一一個能夠獲取對象的屬性名的遍歷方式
  • 缺點:會將對象通過繼承得到的屬性一齊遍歷,造成非預料的結果且效率較低
//會訪問非繼承的屬性 for(attr in object){//attr作為屬性名 //object[attr]訪問值 } 
//避免訪問繼承的屬性 for(attr in object){//attr作為屬性名 if(object.hasOwnProperty(attr)){ //object[attr]訪問值 } } 

FOR…OF循環(效率較高)

  • 優點:能夠快速訪問非繼承屬性值
  • 缺點:需要ES6支持
for(item of object){ //item訪問值 } 

FOREACH方法(數組內置高階方法,含義清晰)

  • 優點:函數式編程,簡潔,快速領會代碼含義
  • 缺點:無法對對象使用
array.forEach(function(item,index,array)){ //item為值 //index為索引 //array為被訪問數組 }; 

TIPS:

  1. 在對對象進行遍歷時,如不需要訪問屬性名選擇for...of循環,如需訪問屬性名選擇for...in循環
  2. 在對數組進行訪問時,使用forEach得到較好的可讀性,傳統的for循環能夠帶來很高的性能及拓展性

集合的操作

提倡的想機器一樣思考中,編程問題的解決被分為了輸入,處理和輸出

 

處理,是對輸入數據的處理,就可以分為從輸入的數據中提煉出一定的有價值的數據,並對他們做出一些操作,得到希望得到的有價值的東西,並將他輸出

MAP映射

Map映射是將輸入的數據中有價值的東西提取出來,轉化為更有利於處理的格式

let dataAfterProcess = array.map(function(item,index,array){ //item為值 //index為索引 //array為被訪問數組 return ;//返回dataAfterProcess中希望被添加的元素 }); 

REDUCE計算

Reduce計算以提取好的數據輸入,並獲得最終的一個結果

let output = array.reduce(function(accumulator, currentValue, currentIndex, array){ //accumulator為輸出結果 //currentValue為遍歷數組目前的值 //currentIndex為遍歷數組目前的索引 //array為被訪問數組 return ;//返回希望累加的操作 },0);//0為計算結果的初始值,默認為數組第一個元素 

TODO

在完成JS練習中,我時常會遇到以下問題待解決:

  1. Map操作中,經常會遇到需要根據已有的目標數組的情況做出相應的映射操作,但目前尚未發現怎樣在Map循環中檢查已映射的目標數組?
  2. 為對象實現接口使對象也具有MapReduce操作的能力


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM