README
DotString
A dot notation string to access an Object's properties.
Install
npm i dot-string
Usage
const { DotString } = require("dot-string")
const users = DotString.set("member.users", [
{ name: "john" },
{ name: "smith" }
])
console.log(users)
// output: { member: { users: [ {name: 'john'}, {name: 'smith'} ] } }
ES Module:
import { DotString } from "dot-string"
const users = DotString.set("member.users", [
{ name: "john" },
{ name: "smith" }
])
console.log(users)
// output: { member: { users: [ {name: 'john'}, {name: 'smith'} ] } }
API
options
Type : object
DotString default options.
DotString.options = {
separator: ".",
reverse: false
}
separator
Type: string
Notation separator, default .
.
reverse
Type: boolean
Reverse path notation, default false
.
.resolve(notation, options?)
Return: string[]
Resolve the dot notation string to a valid Object props, support with index literal member.users[0]
.
DotString.resolve("member.users") // output: ['member', 'users']
DotString.resolve("member.users[0]") // output: ['member', 'users', '0']
// custom separator
DotString.resolve("member/users", { separator: "/" }) // output: [ 'member', 'users' ]
// reverse
DotString.resolve("member.users", { reverse: true }) // output: ['users', 'member']
DotString.resolve("member.users[0]", { reverse: true }) // output: ['users', '0', 'member']
DotString.resolve("member/users", {
reverse: true,
separator: "/"
}) // output: ['users', 'member']
NOTE: In reverse
mode, the notation member["users"]
and member.users
are different, they will resolved as member.users
and users.member
.
.set(notation, value, options?)
notation: string
value: any
Return: object
Parse dot notation string into nestable Object properties with given value.
const data = DotString.set("member.users", [
{ name: "john" },
{ name: "smith" }
])
console.log(data)
// output:
// {
// member: {
// users: [{ name: "john" }, { name: "smith" }]
// }
// }
Custom separator:
const data = DotString.set(
"member/users",
[{ name: "john" }, { name: "smith" }],
{
separator: "/"
}
)
console.log(data)
// output:
// {
// member: {
// users: [{ name: "john" }, { name: "smith" }]
// }
// }
Reverse mode:
const data = DotString.set(
"users.member",
[{ name: "john" }, { name: "smith" }],
{
reverse: true
}
)
console.log(data)
// output:
// {
// member: {
// users: [{ name: "john" }, { name: "smith" }]
// }
// }
.get(notation, source, options?)
notation: string
source: object
Get properties value from given Object by using dot notation string.
const data = { member: { users: [{ name: "john" }, { name: "smith" }] } }
const users = DotString.get("member.users[0]", data)
// const users = DotString.get('member/users[0]', data, { separator: 'true' })
// const users = DotString.get('users[0].member', data, { reverse: true })
console.log(users)
// output: { name: 'john' }