build-object-better
TypeScript icon, indicating that this package has built-in type declarations

1.2.8 • Public • Published

build-object-better

A javascript package for building objects from their properties. Meant to be a replacement for all of your:

const object = keys.reduce((o, k) => {
  o[k] = figureOutValue(k);
  return o;
}, {});

Instead:

const object = buildObject(keys, figureOutValue);

Overview

The general form of the call is buildObject(iterable, [[keySupplier], valueSupplier]); in order to generate the keys and values of the generated object, the iterable is iterated over and for each element, the keySupplier and valueSupplier are invoked to generate the respective components of one key/value pair which will be added as a property on the generated object.

Each supplier can either be a function to generate the value, an array of values corresponding to the order of the iterable, or an object of properties that will supply the values. In addition, the valueSupplier can be a primitive value which will be used as the value for all built properties. Details for each of these options are described below.

Invoked with two arguments, the valueSupplier is provided by the caller, but a default keySupplier is used, which simply uses the element from the iterable as a key. In other words, the iterable is treated as the complete list of keys.

The function can also be invoked with a single argument. If this argument is an iterable object, then the elements of the iterable define the properties of the built object, either as an array of two elements ([key, value]), or as an object with a key property and a value property.

If the single argument is a non-iterable object, then it is shallow copied.

Key Suppliers

When invoked with 3 arguments, the second argument is called the key supplier and is used to generate the keys, or property names, of the generated object.

Key Supplier Type of arg K Description Defined for arg K over iterable
supplier function function(elem:*, idx:number, iterable:Iterable):string A function that is invoked for each element in the iterable (first argument) to generate a corresponding key/property-name for the generated object. keySupplier = (elem, idx) => K(elem, idx, iterable)
key list Array.<string> An array of keys/property-names corresponding to the ordered elements of iterable. keySupplier = (elem, idx) => K[idx]
key map Object An object whose properties map the elements of the iterable to keys/property-names of the generated object. keySupplier = (elem) => K[elem]

Value Suppliers

When invoked with 2 or 3 arguments, the last argument is called the value supplier and is used to generate the property values of the generated object.

ValueSupplier Type of arg V Description Defined for arg V over iterable
supplier function function(key:string, idx: number, keys:Iterable.<string>, elem:*, iterable:Iterable):string A function that is invoked for each element in the iterable (first argument), along with the corresponding key, to generate a corresponding property value for the generated object. valueSupplier = (elem, idx) => V(/* key */ keySupplier(elem, idx, iterable), idx, /* keys */ iterable.map(keySupplier), elem, iterable)
value list Array.<*> An array of values corresponding to the ordered elements of iterable. valueSupplier = (elem, idx) => V[idx]
value source Object An object from which properties named by the keys will be copied. valueSupplier = (elem, idx) => V[keySupplier(elem, idx, iterable)]
constant value (string|number|boolean|null|undefined|symbol) A fixed value that will be used as the value for all properties installed on the build object valueSupplier = () => V

API

For more details on the API, see the detailed API docs

buildObject(iterable, keySupplier, valueSupplier)

Build an object from an iterable, with suppliers to generate the keys and values of the object's properties.

See above for an explanation of the different options for the keySupplier and valueSupplier.

buildObject(keys, valueSupplier)

Build an object from an iterable of keys/property-names and a function to generate corresponding property values for each one.

See above for an explanation of the different options for the valueSupplier.

buildObject(entries)

Build an object from an iterable of entries, each giving the name and value of one property in the object (e.g., as returned by Object.entries).

Param Type Description
entries Iterable<(Array|{key, value})> An iterable of entries, each entry specifying both the name and value of a property for your object. Each entry can be an Array, or an object.
If an Array, then the first item (index 0) in the Array is the name of the property (the "key"), and the second item (index 1) is the property value.
If the entry is not an array, then it is assumed to be an Object with a "key" property specifying the property name, and a "value" property specifying its value.

buildObject(source)

Build an object as a shallow-clone of another object. The returned object will have all the same own properties as the provided source, with the same value. Values are not cloned, but copied directly, thus non-primitive objects (such as Arrays and Objects) will actually be references to the same in-memory value.

Param Type Description
source Object The object to clone.

Package Sidebar

Install

npm i build-object-better

Weekly Downloads

1

Version

1.2.8

License

MIT

Unpacked Size

54.1 kB

Total Files

7

Last publish

Collaborators

  • bmearns