/*
.__..__ . ..__
[__][__)|\/|| \
| || \| ||__/
ARMD its Add, Read, Modify, Delete
*/
const users = [
{
id: 1,
name: "Jonathon Haley",
username: "Monte.Weber2",
email: "Daphne43@yahoo.com",
},
{
id: 2,
name: "Dean John",
username: "dd.1",
email: "deno@google.com",
}
];
// 1. ADD — Adding a new element to users
const newUser = {
id: 4,
name: "Denomer Crazy",
username: "crazy.1",
email: "deno@crazy.com",
};
const newData = [...users, newUser]; // add element at last
const newData = [newUser, ...users]; // add element at first
const newData = users.concat(newUser) // the old way
// Extra! this will add hobbies to users array and return newUsers array
const hobbies = ['chess', 'pool'];
const newUsers = users.map(u => ({...u, hobbies}));
// 2. READ — Get email address, phone number and website of users into new array
const contactInfo = users.map(({email, website, phone}) => ({email, website, phone}));
// 3. MODIFY — Find and replace value for key of objects
const newUsers = users.map(u => u.id == 2? ({...u, name: 'te'}): u);
// this will return newUsers with all user having name 'te'
// 4. DELETE — Delete some key’s from object
const newUsers = users.map({id, email, name, username, phone, password} => ({id, email, username, email, phone, password}));
// will return an array with all keys other than website
// Above code seems to be practically difficult to code for big objects.
const newUsers = users.map(u => Object.keys(u).reduce((newObj, key) => key != 'website' ? { ...newObj, [key]: u[key]} : newObj, {}));