json-summary-filter
Version:
Apply filters on JSON Data read trhough file system
50 lines (49 loc) • 1.16 kB
JavaScript
const fs = require('fs')
let database=[];
let src="";
let info={};
let filters={};
module.exports= {
src: {
set: (path) => {
src= path
database= JSON.parse(
fs.readFileSync(src),
)
},
},
filters: {
add: (name, value) => {
if (!(name in filters)) {
filters[name] = []
}
filters[name].push(value)
},
clear: () => {
filters = {}
},
apply: () => {
return database.filter((data) => {
let keys = Object.keys(filters)
for (let index = 0; index < keys.length; index++) {
const key = keys[index]
if (!filters[key].includes(data[key])) return false
}
return true
})
},
},
summary: (info=[]) => {
let summary = {}
info.forEach((data) => {
let keys = Object.keys(data)
for (let index = 0; index < keys.length; index++) {
if (!(keys[index] in summary)) summary[keys[index]] = {}
if (!(data[keys[index]] in summary[keys[index]]))
summary[keys[index]][data[keys[index]]] = 0
summary[keys[index]][data[keys[index]]]++
}
})
return summary
},
}