fuse-format
v2.4.2
Published
Small utility that takes an array or an object, and returns an array of 'key-strings' for each path in the item. This is useful for libraries like Fusejs that require an array of keys for the fuzzy search.
Downloads
11
Maintainers
Readme
Formatter for Fuse js
Small utility that takes an array or an object, and returns an array of 'key-strings' for each path in the item. This is useful for libraries like Fusejs that require an array of keys for the fuzzy search.
Install
npm i fuseFormat --save
Include
Include package at the top of your project.
const fuseFormat = require('fuse-format')
or
import fuseFormat from 'fuse-format'
Options
A few options are available to you to tweak your response.
Key | Type | Default
--- | --- | ---
includeIndexes | boolean | false
exclude | string || boolean | null
depth | integer | 3
includeIndexes
includeIndexes
sets whether or not to include the array index in the result keystring.
Example:
const data = [ { iHaveAnArray: [ { hello: 'there' } ] } ]
fuseFormat(data, { includeIndexes: true })
// returns [ '0.iHaveAnArray', '0.iHaveAnArray.0.hello' ]
exclude
exclude
accepts either a string or an array of strings of keys or patterns that you would like to exclude from the results.
Example:
const data = { oh: [ { hai: { mark: '' } } ] }
fuseFormat(data, { exclude: 'mark' })
// returns ['oh', 'oh.hai']
Make sure you know what you are excluding because it works from the top down. For example:
const data = {
i: {
am: {
deeply: {
nested: [
{
hi: ''
}
]
}
}
}
}
fuseFormat(data, { exclude: ['am'] })
// returns ['i']
Pattern Example:
const data = {
i: {
am: {
deeply: {
nested: [
{
hi: ''
}
]
}
}
},
so: {
i: {
am: null
}
}
}
fuseFormat(data, exclude: ['deeply.nested'])
// returns ['i', 'i.am', 'i.am.deeply', 'so', 'so.i', 'so.i.am']
depth
depth
accepts an integer and sets how deep to traverse the source.
Example:
const data = {
i: {
am: {
deeply: {
nested: [
{
hi: ''
}
]
}
}
}
}
fuseFormat(data, { depth: 2 })
// returns ['i', 'i.am']
Examples
More examples can be found in the examples folder the repo on: Github
Development
PR's are welcome from any level.