Introduction to Updeep
Updeep is a powerful yet lightweight library for deep object updates in JavaScript. It provides utilities to perform immutable updates to deeply nested objects without the hassle of complex and verbose code. This post will introduce Updeep and its useful APIs with extensive code snippets, ensuring you have everything you need to integrate Updeep into your applications.
Updeep APIs and Examples
u.constant
This function returns a function that always returns the provided value.
const u = require('updeep'); const alwaysFive = u.constant(5); console.log(alwaysFive()); // 5
u.map
Use this function to apply Updeep transformations to each element of an array or each value in an object.
const u = require('updeep'); const double = n => n * 2; const updatedArray = u.map(double)([1, 2, 3]); console.log(updatedArray); // [2, 4, 6]
u.ifElse
This function applies transformations based on a condition you specify. If the condition returns true, the first transformation is applied; otherwise, the second transformation is applied.
const u = require('updeep'); const transform = u.ifElse(n => n > 2, u.constant('large'), u.constant('small')); console.log(transform(3)); // 'large' console.log(transform(1)); // 'small'
u.updateIn
Update deeply nested values in an object using a path array.
const u = require('updeep'); const user = { name: 'Alice', info: { age: 25, location: 'NY' } }; const updatedUser = u.updateIn(['info', 'age'], u.constant(30), user); console.log(updatedUser); // { name: 'Alice', info: { age: 30, location: 'NY' } }
u.merge
Deep merges two objects into one.
const u = require('updeep'); const object1 = { a: 1 }; const object2 = { b: 2, c: { d: 4 } }; const mergedObject = u.merge(object1, object2); console.log(mergedObject); // { a: 1, b: 2, c: { d: 4 } }
u.omit
Omit specified keys from an object.
const u = require('updeep'); const user = { name: 'Alice', age: 25, location: 'NY' }; const updatedUser = u.omit(['age', 'location'], user); console.log(updatedUser); // { name: 'Alice' }
u.rename
Rename keys in an object.
const u = require('updeep'); const user = { fname: 'Alice', lname: 'Johnson' }; const updatedUser = u.rename({ fname: 'firstName', lname: 'lastName' }, user); console.log(updatedUser); // { firstName: 'Alice', lastName: 'Johnson' }
App Example Using Updeep
Let’s consider a simple application where we handle user profiles. We will create, read, update, and delete user profile information with the help of Updeep.
const u = require('updeep'); // Initial user profiles let users = [ { id: 1, name: 'Alice', age: 25 }, { id: 2, name: 'Bob', age: 30 } ]; // Function to update user information function updateUserInfo(userId, info) { users = u.map(u.ifElse(u.is({ id: userId }), u.update(info)))(users); } // Function to delete a user function deleteUser(userId) { users = u.reject(u.is({ id: userId }), users); } // Update Alice's age updateUserInfo(1, { age: 26 }); console.log(users); // Output: [{ id: 1, name: 'Alice', age: 26 }, { id: 2, name: 'Bob', age: 30 }] // Delete Bob deleteUser(2); console.log(users); // Output: [{ id: 1, name: 'Alice', age: 26 }]
In this example, we demonstrated updating and deleting user profiles using Updeep’s functional approach. The functions u.map
and u.reject
allow us to manipulate the users array immutably and efficiently.
Hash: 7e1b5c3c95e9920d833d29b4c03a585b1f748c10472f2263c14179d24c0e1d7e