JSFiddle - React, Tailwind, and code Playground
by wuct
JavaScript
const createEncode = (spec) => {
return (value) => {
const result = Object.keys(spec)
.reduce((acc, key) => {
const newKey = spec[key]
acc[newKey] = value[key]
return acc
}, {})
return result
}
}
const createDecode = (spec) => {
const reversedSpec = Object.keys(spec).reduce((acc, key) => {
acc[spec[key]] = key
return acc
}, {})
return (encoded) => {
const result = Object.keys(reversedSpec)
.reduce((acc, key) => {
const oldKey = reversedSpec[key]
acc[oldKey] = encoded[key]
return acc
}, {})
return result
}
}
const spec = { a: 1, b: 2 }
const encode = createEncode(spec)
const decode = createDecode(spec)
const encoded = encode({ a: 'hello', b: 'world', c: 'hi' })
console.log('encoded: ', encoded)
const decoded = decode(encoded)
console.log('decoded: ', decoded)