Package Exports
- q-set
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (q-set) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Q-Set
Set query string style fields on an object.
Installation
npm install q-set
import { deep, shallow } from 'q-set';
API
qset.deep(obj: any, path: string, val: any): any
- Sets nested paths such as
a[b][c]
. - Concats duplicated properties on an object as an array.
- Supports
[]
as array push and will be appended to an existing array or create a new one.
import { deep as set } from 'q-set'
// Set a key.
set({}, "a", 1); //-> { a: 1 }
// Set a nested path.
set({}, "a[b]", 1); //-> { a: { b: 1 } }
// Implicit array creation (keys used multiple times).
const obj = {};
set(obj, "a", 1); //-> { a: 1 }
set(obj, "a", 2); //-> { a: [1, 2] }
// Explicit array creation.
const obj = {};
set(obj, "a[]", 1); //-> { a: [1] }
set(obj, "a[]", 2); //-> { a: [1, 2] }
// Will also automatically create an array when the a key is a positive integer.
const obj = {};
set(obj, "a[0]", 1); //-> { a: [1] }
set(obj, "a[1]", 2); //-> { a: [1, 2] }
set({}, "b[2]", 3); //-> { b: [,,3] }
// Nested array creation.
const obj = {};
set(obj, "a[][b]", 1); //-> { a: [{ b: 1 }] }
set(obj, "a[][b]", 2); //-> { a: [{ b: 1 }, { b: 2 }] }
qset.shallow(obj: any, path: string, val: any): any
- Concats duplicated properties on an object as an array.
- Will not follow nested query strings.
- If
[]
is used it will be converted to an explicit index and flattened.
import { shallow as set } from 'q-set'
// Doesn't unflatten qs syntax but does append to arrays.
const obj = {};
set(obj, "a[1]", 1); //-> { "a[1]": 1 }
set(obj, "a[1]", 2); //-> { "a[1]": [1, 2] }
// Automatically converts array push "[]" to indexes.
const obj = {};
set(obj, "a[]", 1); //-> { "a[0]": 1 }
set(obj, "a[]", 2); //-> { "a[0]": 1, "a[1]": 2 }
Contributions
- Use
npm test
to build and run tests.
Please feel free to create a PR!