Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

build-object-better

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

build-object-better

Utilities for building out an object from properties

  • 1.2.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
29
Maintainers
1
Weekly downloads
 
Created
Source

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);
  • Detailed API docs
  • Find the code on github
  • Find the package on npm

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 SupplierType of arg KDescriptionDefined for arg K over iterable
supplier functionfunction(elem:*, idx:number, iterable:Iterable):stringA 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 listArray.<string>An array of keys/property-names corresponding to the ordered elements of iterable.keySupplier = (elem, idx) => K[idx]
key mapObjectAn 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.

ValueSupplierType of arg VDescriptionDefined for arg V over iterable
supplier functionfunction(key:string, idx: number, keys:Iterable.<string>, elem:*, iterable:Iterable):stringA 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 listArray.<*>An array of values corresponding to the ordered elements of iterable.valueSupplier = (elem, idx) => V[idx]
value sourceObjectAn 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 objectvalueSupplier = () => 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).

ParamTypeDescription
entriesIterable<(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.

ParamTypeDescription
sourceObjectThe object to clone.

Keywords

FAQs

Package last updated on 27 Aug 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc