ES6中Set()的使用——javaScript
阿新 • • 發佈:2019-01-25
記錄一波今天在專案中實踐使用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
}
完美高效解決資料結構整理的需求!✌