Advertisement
finalmail

Telerik Alpha 14 mentorship

Oct 24th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* eslint-disable no-unused-vars */
  2. const users = [
  3.     {
  4.         name: 'A',
  5.         age: 20,
  6.         isAdmin: false,
  7.     },
  8.     {
  9.         name: 'B',
  10.         age: 15,
  11.         isAdmin: true,
  12.     },
  13.     {
  14.         name: 'C',
  15.         age: 35,
  16.         isAdmin: false,
  17.     },
  18.     {
  19.         name: 'D',
  20.         age: 61,
  21.         isAdmin: true,
  22.     },
  23.     {
  24.         name: 'E',
  25.         age: 61,
  26.         isAdmin: true,
  27.     },
  28. ]
  29.  
  30. // 1) remove the age property
  31. const res1 = users.map(({ age, ...user }) => ({
  32.     ...user,
  33. }))
  34.  
  35. // 2) add property isAdminUnder18 (boolean)
  36. const res2 = users.map(user => ({
  37.     ...user,
  38.     isAdminUnder18: user.isAdmin && user.age < 18,
  39. }))
  40.  
  41. // 3) add property isAdminUnder18: true only if (isAdmin === true && age < 18) - else leave the object unchanged
  42. const res3 = users.map(user => ({
  43.     ...user,
  44.     ...(user.isAdmin && user.age < 18 ? { isAdminUnder18: true } : {}),
  45. }))
  46.  
  47. // -----
  48.  
  49. // 4) get only the users that are selected
  50. const selectedUserNames = ['B', 'C', 'D', 'E']
  51. const res4 = users.filter(user => selectedUserNames.includes(user.name))
  52.  
  53. // 5) get the sum of the ages of the admins that are selected
  54. const res5 = users
  55.     .filter(user => selectedUserNames.includes(user.name) && user.isAdmin)
  56.     .map(({ age }) => age)
  57.     .reduce((totalAge, age) => totalAge + age, 0)
  58.  
  59. // 6) if the sum from 5) is greater than 75 -> return it. else return an array of the ages
  60. const res6 = users
  61.     .filter(user => selectedUserNames.includes(user.name) && user.isAdmin)
  62.     .map(({ age }) => age)
  63.     .reduce((totalAge, age, index, src) => (index === src.length - 1 && totalAge + age <= 75 ? src : totalAge + age), 0)
  64.  
  65. // 7) same as 6) but return an array without duplicates ([15, 61] instead of [15, 61, 61])
  66. const res7 = users
  67.     .filter(user => selectedUserNames.includes(user.name) && user.isAdmin)
  68.     .map(({ age }) => age)
  69.     .reduce(
  70.         (totalAge, age, index, src) =>
  71.             index === src.length - 1 && totalAge + age <= 150 ? [...new Set(src)] : totalAge + age,
  72.         0
  73.     )
  74.  
  75. // 8) same as 6) but return an array of the selected admins instead of their ages
  76.  
  77. // 9) same as 8) but return an array containing only admins with different ages (if there is already an admin of age 61, you cannot add another)
  78.  
  79. // 10) groupBy age
  80.  
  81. console.log('res7', res7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement