UNPKG

@augment-vir/common

Version:

A collection of augments, helpers types, functions, and classes for any JavaScript environment.

67 lines (66 loc) 2.12 kB
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); }