1. 程式人生 > >ES6中Set()的使用——javaScript

ES6中Set()的使用——javaScript

記錄一波今天在專案中實踐使用ES6中的Set()的資料結構,感覺特別帥氣!!!
Set()可以實現在返回的一串資料的陣列中挑選出滿足你條件的資料。最大的關注點就是:去重!!!
使用場景:後臺返回一個數組(所有場景的圖片):裡面包含了全景圖與非全景圖(欄位下面根據imageType)來區分,貨架分為主貨架與非主貨架(而全景圖只在主貨架中展示),但是主貨架又有多個。

//計算屬性subJobPanoramaObject
subJobPanoramaObject () {
  let panoramaList = []
  let panoramaObject = {}  //臨時物件,用於儲存鍵名為主貨架名稱的物件屬性,值為屬於該主貨架的全景圖列表
panoramaList = this.imageList.filter(image => image.imageType === 1) //篩選出全景圖 for (const iterator of panoramaList) { const newSubJobName = iterator.subjobName.substring(0, iterator.subjobName.length - 4) panoramaObject[newSubJobName] = new Set() //new一個Set,它類似於陣列,但是成員的值都是唯一的,沒有重複的值 for
(const image of panoramaList) { if (image.subjobName === iterator.subjobName) { panoramaObject[newSubJobName].add(image) //往剛剛new的Set資料結構裡面填充資料,由於在統一一個數組中遍歷兩次,所以使用set可以完美地解決掉會出現重複的值的問題 } } } let targetObject = {} for (const panorama in panoramaObject) { targetObject[panorama] = [] for
(let item of panoramaObject[panorama].values()) { //通過訪問Set資料結構的values可以得到剛剛存進去的全景圖資料列表 targetObject[panorama].push(item) } } return targetObject }

完美高效解決資料結構整理的需求!✌