1.1.1 • Published 5 years ago
@shaenx/js-plus v1.1.1
js-plus
Pack Examples
Basic usage
let subObject = 'Spam'
let o = { 'SpamA': 1, 'SpamB': 2, 'anonAbc prefixB': 0 }
let newObject = pack({
object: o,
filterFn: (k) => k.startsWith(subObject),
subobjectName: subObject
})
Output: { 'anonAbc prefixB': 0, Spam: { SpamA: 1, SpamB: 2 } }
Using the renameKeyFn param
let subObject = 'Spam'
let o = { 'SpamA': 1, 'SpamB': 2, 'anonAbc prefixB': 0 }
let newObject = pack({
object: o,
filterFn: (k) => k.startsWith(subObject),
subobjectName: subObject,
renameKeyFn: renameKeyWrapper(removePrefix, { prefix: subObject })
})
Output: { 'anonAbc prefixB': 0, Spam: { A: 1, B: 2 } }
Example of iteration over array
import { pack } from "@shaenx/js-plus/pack"
const SUBOBJECTS = ['Pizza', 'Post', 'Book', 'Phone']
const OBJECT_ARRAY = [
{
"Number": "406",
"Name": "Shaul Raggaza",
"PizzaNumber": 10,
"PizzaPublisher": "George Orwell",
"PizzaUpdateDate": "2019-03-13T00:00:00.000Z",
"PizzaVersion": 3,
"PostNumber": null,
"PostPublisher": null,
"PostUpdateDate": null,
"PostVersion": null,
"BookNumber": null,
"BookPublisher": null,
"BookUpdateDate": null,
"BookVersion": null,
"PhoneNumber": null,
"PhonePublisher": null,
"PhoneUpdateDate": null,
"PhoneVersion": null
},
{
"Number": "777",
"Name": "Jornal Dejavu",
"PizzaNumber": null,
"PizzaPublisher": null,
"PizzaUpdateDate": null,
"PizzaVersion": null,
"PostNumber": null,
"PostPublisher": null,
"PostUpdateDate": null,
"PostVersion": null,
"BookNumber": 5555,
"BookPublisher": "Lily Allen",
"BookUpdateDate": "2018-02-02T00:00:00.000Z",
"BookVersion": 2,
"PhoneNumber": 3333,
"PhonePublisher": "Joranj",
"PhoneUpdateDate": "1111-01-01T00:00:00.000Z",
"PhoneVersion": 6
},
{
"Number": "777",
"Name": "Bruce list",
"PizzaNumber": null,
"PizzaPublisher": null,
"PizzaUpdateDate": null,
"PizzaVersion": null,
"PostNumber": null,
"PostPublisher": null,
"PostUpdateDate": null,
"PostVersion": null,
"BookNumber": null,
"BookPublisher": null,
"BookUpdateDate": null,
"BookVersion": null,
"PhoneNumber": null,
"PhonePublisher": null,
"PhoneUpdateDate": null,
"PhoneVersion": null
}
]
packPersonaPossesions = (object_array, prefixes) => {
if (!Array.isArray(object_array)) return
const packMultiplePrefixes = ({ object, prefixes }) => {
let packedObject = { ...object }
prefixes.forEach(prefix => packedObject = pack({
object: packedObject,
filterFn: (k) => k.startsWith(prefix),
subobjectName: prefix,
renameKeyFn: (k) => k.split(prefix)[1]
}))
return packedObject
}
let parsedAppendixes = []
object_array.forEach(object => parsedAppendixes.push(packMultiplePrefixes({ object: object, prefixes })))
return parsedAppendixes
}
let parsedObject = packPersonaPossesions(OBJECT_ARRAY, SUBOBJECTS)
console.log(parsedObject)