Functional Array management with ES6
@thebarefootdev's JavaScript tips
With ES6 syntax, working with arrays has never been easier. The spread operator in particular allows a much cleaner and functional approach, to adding, updating and removing items in an array without the previous hassle of looping, or the need to use pushing or popping!
Enjoy!
// USING AN ARRAY OF PRIMITIVES
let items = ["apples","oranges","pears"];
const add = (arr, item) =>[...arr, item]
const remove = (arr, itemId) => arr.filter(i => i.id !== itemId)
items = add(items, "bananas");
console.log(items); // ["apples","oranges","pears","bananas"]
items = remove(items, "oranges");
console.log(items); // ["apples","pears","bananas"]
/*********************************************************/
// USING AN ARAY OF OBJECTS
let users = [{id: 1, name: "John Smith"}];
const _printUsers = _users => {
let str = "";
for (let u of _users){
str += u.name + ", "
}
console.log(str)
};
printUsers(users); // John Smith,
const addUser = (_users, user) => [..._users, user];
const removeUser = (users, userId) => users.filter(u => u.id !== userId);
const updateUser = (users, user) => [...removeUser(users, user.id), user];
const newUser = {id: users.length +1, name: "Jane Doe"};
users = addUser(users, newUser);
_printUsers(users) // John Smith, Jane Doe,
const updatedUser = {...newUser, name: "Jane Smith"};
users = updateUser(users, updatedUser);
_printUsers(users); // John Smith, Jane Smith,
users = removeUser(users, newUser.id)
_printUsers(users); // John Smith,