1 DATA Utilities (Objects)
Sven Minio edited this page 2026-05-17 19:51:37 +02:00

.chunk

Description Splits an object into an array of smaller objects (chunks). Ideal for batched processing of object properties. Mirrors the array API.

Parameters

  • obj (Object): The source object.
  • size (Number): The maximum number of keys per chunk.

Returns

  • (Object[]): An array of partial objects.

Example

const data = { a: 1, b: 2, c: 3 };
const chunks = $.data.chunk(data, 2);
// Result: [{ a: 1, b: 2 }, { c: 3 }]

.add

Description Safely adds a key-value pair at a specific index without mutating the original object (Immutable). Note: While modern browsers generally respect object insertion order, relying strictly on object key order is not always recommended.

Parameters

  • obj (Object): The original object.
  • key (String): The key to add.
  • value (Any): The value to add.
  • index (Number, optional): The position to insert at. Defaults to the end. Negative values count from the back.

Returns

  • (Object): A new object including the added element.

Example

const list = { a: 1, c: 3 };
const result = $.data.add(list, 'b', 2, 1);
// Result: { a: 1, b: 2, c: 3 }

.clear (Alias: .empty)

Description Clears the object and returns a new empty object. This method is strictly immutable; it does not mutate the original object, ensuring a safe functional approach when resetting state.

Parameters

  • obj (Object): The object to clear.

Returns

  • (Object): A new, empty object ({}).

Example

const userProfile = { name: 'Sven', role: 'Admin' };
const resetProfile = $.data.clear(userProfile);
// Alternatively: $.data.empty(userProfile);

// Result: resetProfile is {}, userProfile remains unchanged

.mergeObjects (Alias: .merge)

Description Recursively merges one or more source objects into a target object (Deep Merge). Note: This modifies the target object in place.

Parameters

  • target (Object): The target object to receive properties.
  • ...sources (Object[]): One or more source objects to merge into the target.

Returns

  • (Object): The modified target object.

Example

const defaults = { app: { theme: 'light', debug: false } };
const config = { app: { debug: true } };

$.data.merge(defaults, config);
// Alternatively: $.data.mergeObjects(defaults, config);

// defaults is now: { app: { theme: 'light', debug: true } }


.pick

Description Creates a new object containing only the specified keys (Allowlist).

Parameters

  • obj (Object): The source object.
  • keys (String[]): An array of keys to keep.

Returns

  • (Object): A new object with the selected keys.

Example

const user = { id: 1, name: 'Alice', role: 'admin' };
const publicProfile = $.data.pick(user, ['name']);
// Result: { name: 'Alice' }


.omit

Description Creates a new object containing all keys except the specified ones (Blocklist).

Parameters

  • obj (Object): The source object.
  • keys (String[]): An array of keys to remove.

Returns

  • (Object): A new object without the specified keys.

Example

const user = { id: 1, name: 'Alice', password: '123' };
const safeUser = $.data.omit(user, ['password']);
// Result: { id: 1, name: 'Alice' }


.get

Description Safely retrieves a value from a nested object using dot-notation. Returns undefined if the path does not exist, preventing runtime errors.

Parameters

  • obj (Object): The object to query.
  • path (String): The path as a dot-notation string (e.g., 'user.address.city').

Returns

  • (Any): The found value or undefined.

Example

const val = $.data.get(response, 'data.items.0.id');


.set

Description Sets a value deeply within a nested object. It automatically creates missing intermediate objects if the path doesn't exist.

Parameters

  • obj (Object): The object to modify.
  • path (String): The path string (e.g., 'settings.theme.color').
  • value (Any): The value to set.

Returns

  • (Void): This function mutates the object and returns nothing.

Example

const config = {};
$.data.set(config, 'database.connection.host', 'localhost');
// config is now: { database: { connection: { host: 'localhost' } } }


.remove.at

Description Removes an entry at a specific index and returns a new object (Immutable). Supports negative indices to count from the end.

Parameters

  • obj (Object): The source object.
  • index (Number): The index to remove.

Returns

  • (Object): A new object without the entry at the specified index.

Example

const data = { a: 1, b: 2, c: 3 };
const result = $.data.remove.at(data, -1); 
// Result: { a: 1, b: 2 }

.remove.first

Description Removes the first entry of the object and returns the rest as a new object (Immutable).

Parameters

  • obj (Object): The source object.

Returns

  • (Object): A new object without the first entry.

Example

const queue = { first: 'Task 1', second: 'Task 2' };
const nextQueue = $.data.remove.first(queue);
// Result: { second: 'Task 2' }

.remove.last

Description Removes the last entry of the object and returns the rest as a new object (Immutable).

Parameters

  • obj (Object): The source object.

Returns

  • (Object): A new object without the last entry.

Example

const stack = { a: 1, b: 2, c: 3 };
const newStack = $.data.remove.last(stack);
// Result: { a: 1, b: 2 }

.remove.byMatch

Description Removes all entries that match the search query condition (Immutable). Acts as an inverse filter.

Parameters

  • obj (Object): The source object.
  • query (String|Number): The search term.
  • mode (String, optional): Comparison mode: 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.
  • searchBy (String, optional): Search by 'key' or 'value'. Default is 'key'.

Returns

  • (Object): A new object containing only the items that did not match.

Example

const config = { api_key: '123', secret: 'abc', api_url: 'http' };
const safeConfig = $.data.remove.byMatch(config, 'api_', 'startsWith', 'key');
// Result: { secret: 'abc' }

.remove.byKey

Description Removes a specific key-value pair from the object based on its key (Immutable).

Parameters

  • obj (Object): The source object.
  • key (String): The exact key to remove.

Returns

  • (Object): A new object without the specified key.

Example

const user = { a: 1, b: 2, c: 3 };
const result = $.data.remove.byKey(user, 'b'); 
// Result: { a: 1, c: 3 }

.remove.byValue

Description Removes all entries that match a specific value exactly (using strict equality !==).

Parameters

  • obj (Object): The source object.
  • value (Any): The exact value to remove.

Returns

  • (Object): A new object without the matching values.

Example

const scores = { alice: 10, bob: 5, charlie: 10 };
const result = $.data.remove.byValue(scores, 10); 
// Result: { bob: 5 }

.remove.all

Description Alias for .clear(). Empties the object immutably.


.find.at

Description Returns the n-th entry of an object as a [key, value] pair. Supports negative indices to count from the end.

Parameters

  • obj (Object): The object to search.
  • index (Number): The 0-based index. Negative numbers count from the back.

Returns

  • ([String, Any] | undefined): A tuple containing the key and value, or undefined.

Example

const data = { a: 1, b: 2, c: 3 };
const entry = $.data.find.at(data, -1);
// Result: ['c', 3]


.find.all

Description Returns a NEW OBJECT containing ALL elements that match the condition. Similar to filter() but returns a partial object. Mirrors the array API.

Parameters

  • obj (Object): The object to search.
  • query (String|Number): The search term.
  • mode (String, optional): 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.
  • searchBy (String, optional): Search by 'key' or 'value'. Default is 'key'.

Returns

  • (Object): A new object containing only the matching elements.

Example

const config = { a: 1, b: 2, c: 1 };
// Find all entries where the value is exactly 1
const matches = $.data.find.all(config, 1, 'exact', 'value');
// Result: { a: 1, c: 1 }

.find.first

Description Finds the first entry where the key or value matches the query.

Parameters

  • obj (Object): The object to search.
  • query (String|Number): The search term.
  • mode (String, optional): Comparison mode: 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.
  • searchBy (String, optional): Search by 'key' or 'value'. Default is 'key'.

Returns

  • ([String, Any] | undefined): The first matching [key, value] pair.

Example

const config = { admin_id: 10, user_id: 20 };
// Find first entry where key starts with 'user'
const match = $.data.find.first(config, 'user', 'startsWith', 'key');
// Result: ['user_id', 20]


.find.last

Description Finds the last entry where the key or value matches the query. Useful for prioritized overrides or ordered objects.

Parameters

  • obj (Object): The object to search.
  • query (String|Number): The search term.
  • mode (String, optional): 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.
  • searchBy (String, optional): 'key' or 'value'. Default is 'key'.

Returns

  • ([String, Any] | undefined): The last matching [key, value] pair.

Example

const files = { 'script.js': 1, 'style.css': 2, 'main.css': 3 };
// Find last entry where key ends with '.css'
const match = $.data.find.last(files, '.css', 'endsWith', 'key');
// Result: ['main.css', 3]


.find.key

Description Finds all keys in the object that match the query.

Parameters

  • obj (Object): The object to search.
  • query (String): The search term.
  • mode (String, optional): 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.

Returns

  • (String[]): An array of matching keys.

Example

const settings = { theme_dark: true, theme_light: false, lang: 'en' };
const themes = $.data.find.key(settings, 'theme_', 'startsWith');
// Result: ['theme_dark', 'theme_light']


.find.value

Description Finds all values in the object that match the query.

Parameters

  • obj (Object): The object to search.
  • query (String): The search term.
  • mode (String, optional): 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.

Returns

  • (Any[]): An array of matching values.

Example

const roles = { bob: 'admin', alice: 'editor', john: 'admin' };
const admins = $.data.find.value(roles, 'admin', 'exact');
// Result: ['admin', 'admin']


.find.byMatch

Description Finds the key of the first match based on the query condition. This mirrors the array method (which returns a numeric index), but returns the string key for objects.

Parameters

  • obj (Object): The object to search.
  • query (String|Number): The search term.
  • mode (String, optional): 'exact', 'contains', 'startsWith', 'endsWith'. Default is 'exact'.
  • searchBy (String, optional): Search by 'key' or 'value'. Default is 'key'.

Returns

  • (String | undefined): The key of the first matching entry, or undefined.

Example

const roles = { user: 'standard', alice: 'admin', bob: 'editor' };

// Find the key of the first entry where the value is 'admin'
const adminKey = $.data.find.byMatch(roles, 'admin', 'exact', 'value');
// Result: 'alice'