Skip to content

Latest commit

 

History

History
286 lines (264 loc) · 13.7 KB

README.md

File metadata and controls

286 lines (264 loc) · 13.7 KB

A collection of methods for working with Objects.
📦 Node.js, 🌐 Web, 📜 Files, 📰 Docs, 📘 Wiki.

An Object is a collection of properties (entries), each with a name (key) and a value. These properties can be values of any data type, including primitive data types like strings and numbers, as well as more complex data types like other objects. Objects in JavaScript are very similar to objects in other programming languages. They are used to store and organize data, and they can be manipulated and accessed using a variety of built-in methods and operators.

One of the quirks of objects is that they are dynamic, which means that properties can be added, removed, and modified at any time. This can be useful for some types of programming, but it can also make it difficult to keep track of an object's properties and values. Another quirk of JavaScript objects is that they are not strongly typed. This means that the same property can hold values of different data types, and the type of a property's value can change over time. This can make it difficult to ensure the correctness of your code, and it can lead to runtime errors if you are not careful. Despite these quirks, objects are a powerful and versatile tool for organizing and manipulating data in your code. They are an essential part of any program, and they are used in a wide range of applications.

This package includes common set functions related to querying about objects, generating them, comparing one with another, finding their size, adding and removing entries, obtaining its characteristics, getting a part of it, getting subset entries in it, finding an entry in it, performing functional operations, manipulating it in various ways, combining together objects or its entries, of performing set operations upon it.

All functions except from*() take object as 1st parameter. Methods like swap() are pure and do not modify the object itself, while methods like swap$() do modify (update) the object itself.

Stability: Experimental.


const object = require('extra-object');
// import * as object from "extra-object";
// import * as object from "https://unpkg.com/extra-object/index.mjs"; (deno)

var x = {a: 1, b: 2, c: 3, d: 4};
object.swap(x, 'a', 'b');
// → { a: 2, b: 1, c: 3, d: 4 }

var x = {a: 1, b: 2, c: 3, d: 4};
var y = {b: 20, c: 30, e: 50};
object.intersection(x, y);
// → { b: 2, c: 3 }

var x = {a: 1, b: 2, c: 3, d: -2};
object.searchAll(x, v => Math.abs(v) === 2);
// → [ 'b', 'd' ]

var x = {a: 1, b: 2, c: 3};
[...object.subsets(x)];
// → [
// →   {},
// →   { a: 1 },
// →   { b: 2 },
// →   { a: 1, b: 2 },
// →   { c: 3 },
// →   { a: 1, c: 3 },
// →   { b: 2, c: 3 },
// →   { a: 1, b: 2, c: 3 }
// → ]


Index

Property Description
is Check if value is an object.
keys List all keys.
values List all values.
entries List all key-value pairs.
fromEntries Convert entries to object.
fromLists Convert lists to object.
compare Compare two objects.
isEqual Check if two objects are equal.
size Get the number of keys in an object.
isEmpty Check if an object is empty.
get Get value at specified key.
getAll Get values at keys.
getPath Get value at path in a nested object.
hasPath Check if nested object has a path.
set Set value at specified key.
set$ Set value at specified key.
setPath$ Set value at path in a nested object.
swap Exchange two values in an object.
swap$ Exchange two values in an object.
remove Remove an entry from object.
remove$ Remove an entry from object.
removePath$ Remove value at path in a nested object.
count Count values which satisfy a test.
countAs Count occurrences of values.
min Find smallest value.
minEntry Find smallest entry.
max Find largest value.
maxEntry Find largest entry.
range Find smallest and largest values.
rangeEntries Find smallest and largest entries.
head Gets first entry from object (default order).
tail Get object without its first entry (default order).
take Keep first n entries only (default order).
take$ Keep first n entries only (default order).
drop Remove first n entries (default order).
drop$ Remove first n entries (default order).
subsets List all possible subsets.
randomKey Pick an arbitrary key.
randomEntry Pick an arbitrary entry.
randomSubset Pick an arbitrary subset.
has Check if object has a key.
hasValue Check if object has a value.
hasEntry Check if object has an entry.
hasSubset Check if object has a subset.
find Find value of an entry passing a test.
findAll Find values of entries passing a test.
search Find key of an entry passing a test.
searchAll Find all keys of entries passing a test.
searchValue Find key with a given value.
searchValueAll Find keys with a given value.
forEach Call a function for each entry.
some Check if any value satisfies a test.
every Check if all values satisfy a test.
map Transform values of an object.
map$ Transform values of an object.
reduce Reduce values to a single value.
filter Keep entries which pass a test.
filter$ Keep entries which pass a test.
filterAt Get object with given keys.
filterAt$ Get object with given keys.
reject Discard entries which pass a test.
reject$ Discard entries which pass a test.
rejectAt Get object without given keys.
rejectAt$ Get object without given keys.
flat Flatten nested object to given depth.
flatMap Flatten nested object, using map function.
zip Combine matching entries from objects.
partition Segregate entries by test result.
partitionAs Segregate entries by similarity.
chunk Break object into chunks of given size.
concat Combine entries from objects, preferring last.
concat$ Combines entries from objects, preferring last.
join Join entries together into a string.
isDisjoint Check if objects have no common keys.
unionKeys Obtain keys present in any object.
union Obtain entries present in any object.
union$ Obtain entries present in any object.
intersectionKeys Obtain keys present in all objects.
intersection Obtain entries present in both objects.
intersection$ Obtain entries present in both objects.
difference Obtain entries not present in another object.
difference$ Obtain entries not present in another object.
symmetricDifference Obtain entries not present in both objects.
symmetricDifference$ Obtain entries not present in both objects.
cartesianProduct List cartesian product of objects.


In the future when you think of just giving up on life, remember that the letter was in your hands, the cab was at the gate, only if you had thought about it once more, your entire life would have been better. (1)

ORG DOI Coverage Status Test Coverage Maintainability