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));