q-set
TypeScript icon, indicating that this package has built-in type declarations

2.0.8 • Public • Published


Q-Set
API Stability TypeScript Styled with prettier Build status Test Coverage NPM Version Downloads Browser Bundle Size

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!

Readme

Keywords

Package Sidebar

Install

npm i q-set

Weekly Downloads

903

Version

2.0.8

License

MIT

Last publish

Collaborators

  • dylanpiercey