dot-string

A dot notation string to access an Object's properties.

Usage no npm install needed!

<script type="module">
  import dotString from 'https://cdn.skypack.dev/dot-string';
</script>

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' }