File tree 3 files changed +90
-0
lines changed
3 files changed +90
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Find the Oldest
2
+
3
+ given an array of objects representing people with a birth and death year, return the oldest person.
4
+
5
+ ## Hints
6
+ - You should return the whole person object, but the tests mostly just check to make sure the name is correct.
7
+ - this can be done with a couple of chained array methods, or by using ` reduce ` .
8
+ - One of the tests checks for people with no death-date.. use JavaScript's Date function to get their age as of today.
9
+
10
+
Original file line number Diff line number Diff line change
1
+ const findTheOldest = function ( array ) {
2
+ return array . reduce ( ( oldest , currentPerson ) => {
3
+ const oldestAge = getAge ( oldest . yearOfBirth , oldest . yearOfDeath )
4
+ const currentAge = getAge ( currentPerson . yearOfBirth , currentPerson . yearOfDeath )
5
+ return oldestAge < currentAge ? currentPerson : oldest
6
+ } )
7
+ }
8
+
9
+ const getAge = function ( birth , death ) {
10
+ if ( ! death ) {
11
+ death = new Date ( ) . getFullYear ( ) ;
12
+ }
13
+ return death - birth ;
14
+ }
15
+
16
+ module . exports = findTheOldest
Original file line number Diff line number Diff line change
1
+ let findTheOldest = require ( './findTheOldest' )
2
+
3
+ describe ( 'findTheOldest' , function ( ) {
4
+ it ( 'finds the oldest person!' , function ( ) {
5
+ const people = [
6
+ {
7
+ name : 'Carly' ,
8
+ yearOfBirth : 1942 ,
9
+ yearOfDeath : 1970 ,
10
+ } ,
11
+ {
12
+ name : 'Ray' ,
13
+ yearOfBirth : 1962 ,
14
+ yearOfDeath : 2011
15
+ } ,
16
+ {
17
+ name : 'Jane' ,
18
+ yearOfBirth : 1912 ,
19
+ yearOfDeath : 1941
20
+ } ,
21
+ ]
22
+ expect ( findTheOldest ( people ) . name ) . toEqual ( 'Ray' ) ;
23
+ } ) ;
24
+ it ( 'finds the oldest person if someone is still living' , function ( ) {
25
+ const people = [
26
+ {
27
+ name : 'Carly' ,
28
+ yearOfBirth : 2018 ,
29
+ } ,
30
+ {
31
+ name : 'Ray' ,
32
+ yearOfBirth : 1962 ,
33
+ yearOfDeath : 2011
34
+ } ,
35
+ {
36
+ name : 'Jane' ,
37
+ yearOfBirth : 1912 ,
38
+ yearOfDeath : 1941
39
+ } ,
40
+ ]
41
+ expect ( findTheOldest ( people ) . name ) . toEqual ( 'Ray' ) ;
42
+ } ) ;
43
+ it ( 'finds the oldest person if the OLDEST is still living' , function ( ) {
44
+ const people = [
45
+ {
46
+ name : 'Carly' ,
47
+ yearOfBirth : 1066 ,
48
+ } ,
49
+ {
50
+ name : 'Ray' ,
51
+ yearOfBirth : 1962 ,
52
+ yearOfDeath : 2011
53
+ } ,
54
+ {
55
+ name : 'Jane' ,
56
+ yearOfBirth : 1912 ,
57
+ yearOfDeath : 1941
58
+ } ,
59
+ ]
60
+ expect ( findTheOldest ( people ) . name ) . toEqual ( 'Carly' ) ;
61
+ } ) ;
62
+
63
+ } ) ;
64
+
You can’t perform that action at this time.
0 commit comments