2.0.8 • Published 7 years ago
q-set v2.0.8
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!
2.0.8
7 years ago
2.0.7
7 years ago
2.0.6
7 years ago
2.0.5
7 years ago
2.0.4
7 years ago
2.0.3
7 years ago
2.0.2
7 years ago
2.0.1
7 years ago
2.0.0
7 years ago
1.4.4
8 years ago
1.4.3
8 years ago
1.4.2
8 years ago
1.4.1
8 years ago
1.4.0
8 years ago
1.3.1
8 years ago
1.3.0
8 years ago
1.2.0
8 years ago
1.1.1
8 years ago
1.1.0
8 years ago
1.0.1
8 years ago
1.0.0
8 years ago
0.1.6
9 years ago
0.1.5
9 years ago
0.1.4
9 years ago
0.1.3
9 years ago
0.1.2
9 years ago
0.1.1
9 years ago
0.1.0
9 years ago