2222// execute the code to ensure all tests pass.
2323
2424function getCardValue ( card ) {
25- // TODO: Implement this function
25+ const validSuits = [ "♠" , "♥" , "♦" , "♣" ] ;
26+ if ( typeof card !== "string" )
27+ throw new Error (
28+ `Invalid card format: "${ card } ". Expected rank followed by suit, for example A♠, 10♥, K♦, or 7♣.`
29+ ) ;
30+
31+ let cardSuit = card . slice ( - 1 ) ;
32+ let cardRank = card . slice ( 0 , - 1 ) ;
33+
34+ if ( validSuits . find ( ( suit ) => suit === cardSuit ) ) {
35+ console . log ( cardSuit ) ;
36+ switch ( cardRank ) {
37+ case "A" :
38+ console . log ( cardRank , "ace rank" ) ;
39+ return 11 ;
40+
41+ case "J" :
42+ case "Q" :
43+ case "K" :
44+ console . log ( cardRank , "face rank" ) ;
45+ return 10 ;
46+
47+ case "2" :
48+ case "3" :
49+ case "4" :
50+ case "5" :
51+ case "6" :
52+ case "7" :
53+ case "8" :
54+ case "9" :
55+ case "10" :
56+ console . log ( cardRank , "number rank" ) ;
57+ return Number ( cardRank ) ;
58+
59+ default :
60+ throw new Error (
61+ `Invalid card format: "${ card } ". Expected rank followed by suit, for example A♠, 10♥, K♦, or 7♣.`
62+ ) ;
63+ }
64+ } else
65+ throw new Error (
66+ `Invalid card format: "${ card } ". Expected rank followed by suit, for example A♠, 10♥, K♦, or 7♣.`
67+ ) ;
2668}
2769
2870// The line below allows us to load the getCardValue function into tests in other files.
64106 // This line will not be reached if an error is thrown as expected
65107 console . error ( "Error was not thrown for invalid card" ) ;
66108} catch ( err ) {
67- console . error ( error ) ;
109+ console . error ( err ) ;
68110}
69111
70112// What other invalid card cases can you think of?
75117 // This line will not be reached if an error is thrown as expected
76118 console . error ( "Error was not thrown for invalid card" ) ;
77119} catch ( err ) {
78- console . error ( error ) ;
120+ console . error ( err ) ;
79121}
80122
81123try {
84126 // This line will not be reached if an error is thrown as expected
85127 console . error ( "Error was not thrown for invalid card" ) ;
86128} catch ( err ) {
87- console . error ( error ) ;
129+ console . error ( err ) ;
88130}
89131
90132try {
93135 // This line will not be reached if an error is thrown as expected
94136 console . error ( "Error was not thrown for invalid card" ) ;
95137} catch ( err ) {
96- console . error ( error ) ;
138+ console . error ( err ) ;
97139}
98140
99141try {
@@ -102,7 +144,7 @@ try {
102144 // This line will not be reached if an error is thrown as expected
103145 console . error ( "Error was not thrown for invalid card" ) ;
104146} catch ( err ) {
105- console . error ( error ) ;
147+ console . error ( err ) ;
106148}
107149
108150try {
@@ -111,7 +153,7 @@ try {
111153 // This line will not be reached if an error is thrown as expected
112154 console . error ( "Error was not thrown for invalid card" ) ;
113155} catch ( err ) {
114- console . error ( error ) ;
156+ console . error ( err ) ;
115157}
116158
117159try {
@@ -120,7 +162,7 @@ try {
120162 // This line will not be reached if an error is thrown as expected
121163 console . error ( "Error was not thrown for invalid card" ) ;
122164} catch ( err ) {
123- console . error ( error ) ;
165+ console . error ( err ) ;
124166}
125167
126168try {
@@ -129,7 +171,7 @@ try {
129171 // This line will not be reached if an error is thrown as expected
130172 console . error ( "Error was not thrown for invalid card" ) ;
131173} catch ( err ) {
132- console . error ( error ) ;
174+ console . error ( err ) ;
133175}
134176
135177try {
@@ -138,7 +180,7 @@ try {
138180 // This line will not be reached if an error is thrown as expected
139181 console . error ( "Error was not thrown for invalid card" ) ;
140182} catch ( err ) {
141- console . error ( error ) ;
183+ console . error ( err ) ;
142184}
143185
144186try {
@@ -147,7 +189,7 @@ try {
147189 // This line will not be reached if an error is thrown as expected
148190 console . error ( "Error was not thrown for invalid card" ) ;
149191} catch ( err ) {
150- console . error ( error ) ;
192+ console . error ( err ) ;
151193}
152194
153195try {
@@ -156,7 +198,7 @@ try {
156198 // This line will not be reached if an error is thrown as expected
157199 console . error ( "Error was not thrown for invalid card" ) ;
158200} catch ( err ) {
159- console . error ( error ) ;
201+ console . error ( err ) ;
160202}
161203
162204try {
@@ -165,7 +207,7 @@ try {
165207 // This line will not be reached if an error is thrown as expected
166208 console . error ( "Error was not thrown for invalid card" ) ;
167209} catch ( err ) {
168- console . error ( error ) ;
210+ console . error ( err ) ;
169211}
170212
171213try {
@@ -174,7 +216,7 @@ try {
174216 // This line will not be reached if an error is thrown as expected
175217 console . error ( "Error was not thrown for invalid card" ) ;
176218} catch ( err ) {
177- console . error ( error ) ;
219+ console . error ( err ) ;
178220}
179221
180222try {
@@ -183,5 +225,5 @@ try {
183225 // This line will not be reached if an error is thrown as expected
184226 console . error ( "Error was not thrown for invalid card" ) ;
185227} catch ( err ) {
186- console . error ( error ) ;
228+ console . error ( err ) ;
187229}
0 commit comments