兩種方法將一維數組按照條件重組爲二維數組

   因爲咱們的數據是後臺從數據庫讀取發送過來的,因此是個一維數組,所以以前在渲染的時候就都是散的,而我這邊想要個人數據在顯示的時候是根據其申請時間顯示的,就像商城生成的訂單那樣,一個訂單顯示多個商品,所以在這邊就須要將一維數組按照條件重組,操做以下:前端

  • 因爲在頁面中使用了分頁,所以在這裏拼接了一下數組:(沒使用到分頁的就直接定義就行了)
const a = this.data.applyList.concat(data.result);複製代碼

第一種:

  • 使用map方法按照條件遍歷數組並過濾獲得一個含有過濾條件的新數組,ps:過濾條件屢次出現時只取它第一次出現時的index
const group = a.map(el => el.receiveTime).filter((el,i,curArr) => curArr.indexOf(el) === i)複製代碼
  • 建立一個長度與上述過濾得出的數組長度相同的空數組
let list = Array.from(Array(group.length)).map(() => Array(0))複製代碼
  • 遍歷原始數組a,將a的值根據過濾條件拆分push到list數組中
a.forEach((el) => list[group.indexOf(el.receiveTime)].push(el))複製代碼

   由於第一步定義數組實在算不上什麼操做,因此總結來說就是三行代碼實現將一維數組按照條件重組爲二維數組。 你們按照本身的需求套用就能夠了。es6

第二種:

  • 使用了es6的Object.values()方法
返回數組,成員是參數對象自身的(不含繼承的)全部可遍歷(enumerable)屬性的鍵值

var arrayTwo = Object.values(a.reduce((res, item) => {  
  res[item.receiveTime] ? res[item.receiveTime].push(item) : res[item.receiveTime] = [item]; 
   return res;          
}, {}));複製代碼

   

這裏是MiaoWu,一隻前端小菜雞,歡迎你們點贊,交流 ❤數據庫

相關文章
相關標籤/搜索