Get and set nested variables of an object, includes support for Backbone Models
// Import
import { setDeep, getDeep } from 'getsetdeep'
// Prepare
const obj = {
a: {
b: {
c: 3,
},
},
}
// Get
console.log(getDeep(obj, 'a.b.c')) // 3
console.log(setDeep(obj, 'a.b.c', 4)) // 4
console.log(getDeep(obj, 'a.b.c')) // 4
setDeep
also has a fourth argumentopts
for options, currently we support the options:onlyIfEmpty
defaults tofalse
, if specified totrue
thensetDeep
will only set the value if the current value isnull
orundefined
- We also work with getters
get(key)
and settersset(attrs, opts)
, enabling support for Backbone.js models as well as others
To satisfy the egos of some security researchers, just as you wouldn't do obj[prompt('some user input')] = 'value'
don't do setDeep(obj, prompt('some user input'), 'value')
, obviously. Rather than getsetdeep
preventing __proto__
access, we assume the consumers of this library are intelligent enough to do what they intend.
- Install:
npm install --save getsetdeep
- Import:
import * as pkg from ('getsetdeep')
- Require:
const pkg = require('getsetdeep')
import * as pkg from 'https://unpkg.com/getsetdeep@^5.6.0/edition-deno/index.ts'
<script type="module">
import * as pkg from '//cdn.skypack.dev/getsetdeep@^5.6.0'
</script>
<script type="module">
import * as pkg from '//unpkg.com/getsetdeep@^5.6.0'
</script>
<script type="module">
import * as pkg from '//dev.jspm.io/getsetdeep@5.6.0'
</script>
This package is published with the following editions:
getsetdeep
aliasesgetsetdeep/index.cjs
which uses the Editions Autoloader to automatically select the correct edition for the consumer's environmentgetsetdeep/source/index.ts
is TypeScript source code with Import for modulesgetsetdeep/edition-browsers/index.js
is TypeScript compiled against ES2022 for web browsers with Import for modulesgetsetdeep/edition-es2022/index.js
is TypeScript compiled against ES2022 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesgetsetdeep/edition-es5/index.js
is TypeScript compiled against ES5 for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesgetsetdeep/edition-es2022-esm/index.js
is TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Import for modulesgetsetdeep/edition-types/index.d.ts
is TypeScript compiled Types with Import for modulesgetsetdeep/edition-deno/index.ts
is TypeScript source code made to be compatible with Deno
Discover the release history by heading on over to the HISTORY.md
file.
Discover how to contribute via the CONTRIBUTING.md
file.
- Benjamin Lupton — Accelerating collaborative wisdom.
- Benjamin Lupton — Accelerating collaborative wisdom.
- Andrew Nesbitt — Software engineer and researcher
- Balsa — We're Balsa, and we're building tools for builders.
- Codecov — Empower developers with tools to improve code quality and testing.
- Poonacha Medappa
- Rob Morris
- Sentry — Real-time crash reporting for your web apps, mobile apps, and games.
- Syntax — Syntax Podcast
- Andrew Nesbitt
- Armen Mkrtchian
- Balsa
- Chad
- Codecov
- dr.dimitru
- Elliott Ditman
- entroniq
- GitHub
- Hunter Beast
- Jean-Luc Geering
- Michael Duane Mooring
- Michael Harry Scepaniak
- Mohammed Shah
- Mr. Henry
- Nermal
- Pleo
- Poonacha Medappa
- Rob Morris
- Robert de Forest
- Sentry
- ServieJS
- Skunk Team
- Syntax
- WriterJohnBuck
Unless stated otherwise all works are:
- Copyright © Benjamin Lupton
and licensed under: