@@ -6,12 +6,33 @@ window.addEventListener("load", function() {
6
6
. then ( function ( jsonString ) {
7
7
// console.log(jsonString);
8
8
9
- let astronauntInfo = "" ;
9
+ // 26.6.3 Bonus Missions
10
+ let hoursArray = [ ] ;
11
+ jsonString . forEach ( function ( astronaut ) {
12
+ hoursArray . push ( astronaut . hoursInSpace ) ;
13
+ } ) ;
14
+
15
+ hoursArray = mergeSort ( hoursArray ) ;
16
+
17
+ let astronautInfo = "" ;
18
+ for ( let i = hoursArray . length - 1 ; i >= 0 ; -- i ) {
19
+ for ( const astronaut of jsonString ) {
20
+ if ( astronaut . hoursInSpace === hoursArray [ i ] ) {
21
+ astronautInfo += addHTML ( astronaut ) ;
22
+ }
23
+ }
24
+ }
25
+
26
+
27
+ // 26.6.2 Requirements
28
+ /*
29
+ let astronautInfo = "";
10
30
for (let i = 0; i < jsonString.length; i++) {
11
- astronauntInfo += addHTML ( jsonString [ i ] ) ;
31
+ astronautInfo += addHTML(jsonString[i]);
12
32
}
33
+ */
13
34
14
- document . getElementById ( "container" ) . innerHTML = astronauntInfo ;
35
+ document . getElementById ( "container" ) . innerHTML = astronautInfo ;
15
36
} ) ;
16
37
} ) ;
17
38
} ) ;
@@ -23,12 +44,48 @@ function addHTML(data) {
23
44
<h3>${ data . firstName } ${ data . lastName } </h3>
24
45
<ul>
25
46
<li>Hours in space: ${ data . hoursInSpace } </li>
26
- <li>Active: ${ data . active } </li>
27
- <li>Skills: ${ data . skills } </li>
47
+ <li style=" ${ data . active ? "color: green;" : "" } " >Active: ${ data . active } </li>
48
+ <li>Skills: ${ data . skills . join ( ", " ) } </li>
28
49
</ul>
29
50
</div>
30
51
<img class="avatar" src="${ data . picture } ">
31
52
</div>
32
53
` ;
33
54
return htmlWraper ;
55
+ }
56
+
57
+ function mergeSort ( arr ) {
58
+ if ( arr . length < 2 ) {
59
+ return arr ;
60
+ }
61
+ let middle = Math . floor ( arr . length / 2 ) ;
62
+ let left = arr . slice ( 0 , middle ) ;
63
+ let right = arr . slice ( middle ) ;
64
+
65
+ left = mergeSort ( left ) ;
66
+ right = mergeSort ( right ) ;
67
+
68
+ return merge ( left , right ) ;
69
+ }
70
+
71
+ function merge ( arr1 , arr2 ) {
72
+ let sortedArr = [ ] ;
73
+
74
+ while ( arr1 . length > 0 && arr2 . length > 0 ) {
75
+ if ( arr1 [ 0 ] > arr2 [ 0 ] ) {
76
+ sortedArr . push ( arr2 . shift ( ) ) ;
77
+ } else {
78
+ sortedArr . push ( arr1 . shift ( ) ) ;
79
+ }
80
+ }
81
+
82
+ while ( arr1 . length > 0 ) {
83
+ sortedArr . push ( arr1 . shift ( ) ) ;
84
+ }
85
+
86
+ while ( arr2 . length > 0 ) {
87
+ sortedArr . push ( arr2 . shift ( ) ) ;
88
+ }
89
+
90
+ return sortedArr ;
34
91
}
0 commit comments