6.7.76 • Published 1 year ago

@zitterorg/consequuntur-doloremque-ducimus v6.7.76

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Object Resolver

Provides general functionality for dealing with nested properties in JavaScript objects

 

Available methods:

  • isEqual
  • filterObject
  • removeUndefinedProperties
  • hasNestedProperty
  • getNestedProperty
  • fetchLastNestedProperty
  • setNestedProperty
  • deleteNestedProperty
  • cloneObject
  • cloneStructure

 

Install

Install / Uninstall with npm:

$ npm install @zitterorg/consequuntur-doloremque-ducimus

Uninstall

$ npm uninstall @zitterorg/consequuntur-doloremque-ducimus

Run Tests

$ npm run test

After tests running coverage report can be found in coverage directory

Run ESLint

To perform ESlint check run following command:

$ npm run eslint

To fix issues, found by ESLint run:

$ npm run eslint-fix

Usage

Require package:

// by using require
const resolver = require('@zitterorg/consequuntur-doloremque-ducimus');
// by using import 
//import resolver from "@zitterorg/consequuntur-doloremque-ducimus";
// by using object destructor
//const {cloneObject} = require('dist/object-resolver');

isEqual(obj, propertyPath)

Compares two objects for deep equality

const result = resolver.isEqual({ a: 1, b: { c: 2 } }, { a: 1, b: { c: 2 } });
const result = resolver.isEqual([1, 2, 3], [1, 2, 4]);

filterObject(obj, predicate)

Filters the properties of an object based on a predicate function

const filtered = resolver.filterObject({ a: 1, b: 2, c: 3, d: 4 }, (value, key) => value % 2 === 0);

removeUndefinedProperties(obj)

Removes properties with undefined values from an object

const cleaned = resolver.removeUndefinedProperties({ a: 1, b: undefined, c: { d: 4, e: undefined } });

hasNestedProperty(obj, propertyPath)

Checks if nested property exists, if not return default value

const prop = resolver.hasNestedProperty(obj, 'innerObject.deepObject.value');
const prop = resolver.hasNestedProperty(obj, 'innerObject.deepObject.value', 'defaultValue');

getNestedProperty(objParam, propertyPath, defaultValue)

Get nested property exists and if not empty perform some action

const prop = resolver.getNestedProperty(obj, 'innerObject.deepObject.value')
if (prop) {
  // ...
}

fetchLastNestedProperty(obj, path)

Fetch last chained nested property

const prop = resolver.fetchLastNestedProperty(obj, 'prop');

setNestedProperty(obj, path, value)

Set a deeply nested property in an object

const prop = resolver.setNestedProperty(obj, 'user.profile.name', 'John Doe');

deleteNestedProperty(obj, path)

Delete a deeply nested property in an object

const prop = resolver.deleteNestedProperty(obj, 'user.profile.name', 'John Doe');

cloneObject(obj)

Deep cloning of object

const objCopy = resolver.cloneObject(obj);

cloneStructure(obj, options)

Deep cloning of structure (node > v17)

const structureCopy = resolver.cloneStructure(obj, options);

Examples

const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };
const compareResult = resolver.isEqual(obj1, obj2);
const original = { a: 1, b: 2, c: 3, d: 4 };
const filtered = resolver.filterObject(original, (value, key) => value % 2 === 0);
console.log(filtered); 
const original = { a: 1, b: undefined, c: { d: 4, e: undefined } };
const cleaned = resolver.removeUndefinedProperties(original);
const obj = {
  innerObject: {
    deepObject: {
      value: 'Here I am'
    }
  }
};

console.log(resolver.hasNestedProperty(obj, 'innerObject.deepObject.value'));                         // true
console.log(resolver.hasNestedProperty(obj, 'innerObject.deepObject.wrongValue'));                    // false
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.value'));                         // 'Here I am'
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.wrongValue'));                    // undefined
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.wrongValue.oneMore', 'Oh-h-h'));  // 'Oh-h-h'
const obj = {
  innerObject: {
    deepObject: [
      { name: 'John' },
      { name: 'Nick' },
      { name: 'Ron' }
    ]
  }
};

console.log(resolver.hasNestedProperty(obj, 'innerObject.deepObject.0.name'));              // true
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.1.name'));              // 'Nick'
const obj = { role: { role: { role: 'student' } }};
const role = resolver.fetchLastNestedProperty(obj, 'role');
const obj = {'a':{'b':2}, 'c':3};
const objCopy = resolver.cloneObject(obj);

License

MIT

6.7.76

1 year ago

6.7.72

1 year ago

6.7.73

1 year ago

6.7.74

1 year ago

6.7.75

1 year ago

6.7.70

1 year ago

6.7.71

1 year ago

6.7.69

1 year ago

6.7.67

1 year ago

6.7.68

1 year ago

6.7.66

1 year ago

6.7.62

1 year ago

6.7.63

1 year ago

6.7.64

1 year ago

6.7.65

1 year ago

5.6.51

1 year ago

5.6.50

1 year ago

5.6.53

1 year ago

5.6.52

1 year ago

5.7.61

1 year ago

5.7.60

1 year ago

4.6.40

1 year ago

4.6.41

1 year ago

4.6.44

1 year ago

4.6.45

1 year ago

4.6.42

1 year ago

1.5.30

1 year ago

4.6.43

1 year ago

1.5.32

1 year ago

1.5.31

1 year ago

1.5.34

1 year ago

1.5.33

1 year ago

5.6.58

1 year ago

1.5.35

1 year ago

5.6.55

1 year ago

5.6.54

1 year ago

5.6.57

1 year ago

5.6.56

1 year ago

3.6.39

1 year ago

6.7.61

1 year ago

5.6.48

1 year ago

5.7.59

1 year ago

5.6.47

1 year ago

4.6.39

1 year ago

5.6.49

1 year ago

5.7.58

1 year ago

5.6.46

1 year ago

5.6.45

1 year ago

3.5.39

1 year ago

2.5.36

1 year ago

2.5.37

1 year ago

2.5.38

1 year ago

2.5.39

1 year ago

2.5.35

1 year ago

1.5.29

1 year ago

1.4.26

1 year ago

1.5.27

1 year ago

1.5.26

1 year ago

1.5.28

1 year ago

1.4.24

1 year ago

1.4.23

1 year ago

1.4.25

1 year ago

1.4.20

1 year ago

1.4.22

1 year ago

1.4.21

1 year ago

1.3.17

1 year ago

1.3.18

1 year ago

1.3.16

1 year ago

1.2.13

1 year ago

1.2.16

1 year ago

1.4.19

1 year ago

1.2.14

1 year ago

1.4.18

1 year ago

1.2.15

1 year ago

1.1.13

1 year ago

1.1.12

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago