以下的資料內容內
希望能夠根據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
}
})
除了使用if
、switch
之外
還能用什麼方式讓程式碼更簡短呢?
可以利用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()方式
如此一來,可以獲得相同的結果
程式碼也變得簡短許多