Messy function #1
by jacobwsmith
JavaScript
// Messy Function #1
// function getUserData(userId, users, includeInactive, formatter) {
// let result = {};
// for (let i = 0; i < users.length; i++) {
// if (users[i].id == userId) {
// if (users[i].active || includeInactive == true) {
// let name = users[i].firstName + " " + users[i].lastName;
// let email = users[i].email;
// let age = 2025 - users[i].birthYear;
// result = { n: name, e: email, a: age };
// if (formatter) {
// result = formatter(result);
// }
// } else {
// return "User not active";
// }
// }
// }
// if (Object.keys(result).length === 0) {
// console.log("No user found");
// return;
// }
// return result;
// }
function getUserData(userId, users, includeInactive, formatter) {
if (!Array.isArray(users)) {
throw new Error('users must be an Array');
}
const user = users.find((u) => u.id === userId);
if (!user) return null;
if(!user.active && !includeInactive) return null;
const currentYear = new Date().getFullYear();
const result = {
name: `${user.firstName} ${user.lastName}`,
email: user.email,
age: currentYear - user.birthYear
}
return formatter ? formatter(result) : result
}
const users = [
{
id: 1,
firstName: "Jay",
lastName: "Smith",
email: '[email protected]',
birthYear: 1976,
active: true,
},
{
id: 2,
firstName: "Larry",
lastName: "Bird",
email: '[email protected]',
birthYear: 1952,
active: true,
},
{
id: 3,
firstName: "Michael",
lastName: "Bolton",
email: '[email protected]',
birthYear: 1950,
active: true,
}
]
console.log(getUserData(1, users, true));