iT邦幫忙

1

Javascript 將資料進行分類方法

資料處理#1

以下的資料內容內
希望能夠根據type
將資料分成三大類
我們可以怎麼做呢?

data:[
    { id: 'one', type: 0 },
    { id: 'two', type: 0 },
    { id: 'three', type: 2 },
    { id: 'four', type: 1 },
    { id: 'five', type: 2 },
    { id: 'six', type: 0 },
    { id: 'seven', type: 0 },
    { id: 'eight', type: 1 },
    { id: 'nine', type: 2 },
    { id: 'ten', type: 1 },
]

需要進行判斷的情況下
通常最簡單的方式就是使用
if或是switch

let typeOneList = []
let typeTwoList = []
let typeThreeList = []

data.forEach(item => {
    switch (item.type) {
      case 0:
        typOneList.push(item)
        break
      case 1:
        typeTwoList.push(item)
        break
      case 2:
        typeThreeList.push(item)
        break
    }
})

除了使用ifswitch之外
還能用什麼方式讓程式碼更簡短呢?

較進階的寫法

可以利用type的資料當作index值
來區分object的keys後 塞入該筆資料

let result = {}
let keys = ['type1', 'type2', 'type3']

data.forEach(item => {
    const originData = result[keys[item.type]] || []
    result[keys[item.type]] = [...list, item]
})

[...list, item]用法就像是直接使list.push()方式

如此一來,可以獲得相同的結果
程式碼也變得簡短許多


尚未有邦友留言

立即登入留言