@augment-vir/common
Version:
A collection of augments, helpers types, functions, and classes for any JavaScript environment.
67 lines (66 loc) • 2.12 kB
JavaScript
import { mapObject } from './map-entries.js';
import { mapObjectValues } from './map-values.js';
import { getObjectTypedEntries, typedObjectFromEntries } from './object-entries.js';
/**
* Filters an object. Like
* [`[].filter`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries)
* but for objects.
*
* @category Object
* @category Package : @augment-vir/common
* @example
*
* ```ts
* import {filterObject} from '@augment-vir';
*
* filterObject({a: 1, b: 2, c: 3}, (key, value) => {
* return value >= 2;
* });
* // output is `{b: 2, c: 3}`
* ```
*
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
*/
export function filterObject(inputObject, callback) {
const filteredEntries = getObjectTypedEntries(inputObject).filter(([key, value,]) => {
return callback(key, value, inputObject);
});
return typedObjectFromEntries(filteredEntries);
}
/**
* Removes keys for values that are `undefined`.
*
* @category Object
* @category Package : @augment-vir/common
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
*/
export function removeUndefinedValues(input) {
return mapObject(input, (key, value) => {
if (value === undefined) {
return undefined;
}
else {
return { key, value };
}
});
}
/**
* Replaces all `undefined` values with `null`.
*
* @category Object
* @category Package : @augment-vir/common
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
*/
export function replaceUndefinedValuesWithNull(input) {
return mapObjectValues(input, (key, value) => value === undefined ? null : value);
}
/**
* Replaces all `null` values with `undefined`.
*
* @category Object
* @category Package : @augment-vir/common
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
*/
export function replaceNullValuesWithUndefined(input) {
return mapObjectValues(input, (key, value) => value === null ? undefined : value);
}