stateにあるJSONデータ、もしくはactionsで持ってきたデータをフィルタリングする方法。
今回はそもそもバックエンド側でフィルタリングしようねという話になったので、自分の環境では使用しなかった。
でもせっかく組んだし、もったいないので共有します(あんまり使い道は無いだろうけど・・・)
export const getters = {
getFilteringList: (state) => (query) => {
// queryの形式を[{key:'',value:''}...]に変換する
let conversion = Object.entries(query).map(([key, value]) => ({'key': key, 'value': value}))
// 条件に合致したデータを返す関数を定義(every関数なので、全てに合致する必要がある)
function isMatchToAllConditions(data, conditions){
return conditions.every(c => data[c.key] == c.value)
}
// null以外の要素を取り出す
const conditions = conversion.filter(q => q.value && q.key)
// フィルターをかける
const searched = state.data.filter(list => {
return isMatchToAllConditions(list, conditions)
})
// 出力
return searched
}
}
getFilteringListにはコンポーネント側でqueryを投げてあげる必要がある。