@@ -31,8 +31,8 @@ const filteredNumbers = mixedArray.filter((item) => (typeof(item) == 'number'));
3131console . log ( 'Only numbers from mixed array:' , filteredNumbers ) ;
3232
3333
34- const mappedString = filteredNumbers . map ( ( number ) => number = ( 'Number:' + number . toString ( ) ) ) ;
35- console . log ( ' Numbers converted to a string:' , mappedString ) ;
34+ const mappedStrings = filteredNumbers . map ( ( number ) => number = ( 'Number:' + number . toString ( ) ) ) ;
35+ console . log ( ' Numbers converted to a string:' , mappedStrings ) ;
3636
3737// Part II - Reduction & Calculation
3838
@@ -68,7 +68,7 @@ mixedArray.forEach((item) => {
6868
6969let chainedResult =
7070mixedArray . filter ( ( item ) => typeof ( item ) === 'number' )
71- . map ( ( item ) => 'Number: ' + item ) ;
71+ . map ( ( item ) => 'Number: ' + item ) ;
7272console . log ( `Array of numbers converted to strings (by chaining methods):` , chainedResult ) ;
7373
7474console . groupEnd ( ) ;
@@ -107,7 +107,8 @@ console.log('Total number of numbers in the array \n- with .reduce(): ',countNum
107107
108108
109109console . log ( '✨ Original filtered numbers:' , filteredNumbers ) ;
110- const sortedDescending = filteredNumbers . sort ( ( a , b ) => ( b - a ) ) ;
110+ const filterNumbers = [ ...filteredNumbers ]
111+ const sortedDescending = filterNumbers . sort ( ( a , b ) => ( b - a ) ) ;
111112console . log ( `Filtered numbers in descending order: ` , sortedDescending ) ;
112113
113114// 3 - Unique Collection
@@ -135,15 +136,15 @@ console.log('Unique elements - with reduce():\n',uniqueE);
135136
136137console . log ( '✨ Original mixed array:' , mixedArray ) ;
137138
138- const transformedMixedAray = mixedArray . map ( ( element ) => {
139+ const transformedMixedArray = mixedArray . map ( ( element ) => {
139140if ( typeof ( element ) == 'number' ) {
140141 return element * element ;
141142} else {
142143 return element . toUpperCase ( ) ;
143144}
144145} ) ;
145146console . log ( 'Transformed mixed array \n(strings to uppercase, numbers squared):' ) ;
146- console . log ( transformedMixedAray ) ;
147+ console . log ( transformedMixedArray ) ;
147148console . groupEnd ( ) ;
148149
149150// <--- SCORE ANALYSIS --->
@@ -188,3 +189,70 @@ uniqueSortedScores.sort((a,b)=>b-a);
188189console . log ( `Only uniques values (from highest to lowest): ` , uniqueSortedScores ) ;
189190
190191console . groupEnd ( ) ;
192+ 193+ // <--- TEST CASES --->
194+ 195+ console . log ( 'Test Cases' ) ;
196+ 197+ // Helper function for asserting equality
198+ function assertEqual ( actual , expected , testName ) {
199+ const areArraysEqual = ( arr1 , arr2 ) => {
200+ if ( ! Array . isArray ( arr1 ) || ! Array . isArray ( arr2 ) ) return actual === expected ;
201+ if ( arr1 . length !== arr2 . length ) return false ;
202+ for ( let i = 0 ; i < arr1 . length ; i ++ ) {
203+ if ( arr1 [ i ] !== arr2 [ i ] ) return false ;
204+ }
205+ return true ;
206+ } ;
207+ 208+ if ( areArraysEqual ( actual , expected ) ) {
209+ console . log ( `✅ PASS: ${ testName } ` ) ;
210+ } else {
211+ console . error ( `❌ FAIL: ${ testName } - Expected: ${ JSON . stringify ( expected ) } , Got: ${ JSON . stringify ( actual ) } ` ) ;
212+ }
213+ }
214+ 215+ // --- Warm-up Exercise Tests ---
216+ // Assuming you store the results in `doubledFor` and `doubledMap`
217+ // Example: const doubledFor = [2, 4, 6, 8, 10];
218+ // Example: const doubledMap = [2, 4, 6, 8, 10];
219+ assertEqual ( doubledFor , [ 2 , 4 , 6 , 8 , 10 ] , "Warm-up: doubledFor using for loop" ) ;
220+ assertEqual ( doubledMap , [ 2 , 4 , 6 , 8 , 10 ] , "Warm-up: doubledMap using .map()" ) ;
221+ 222+ // --- Easy Challenge Tests ---
223+ // Assuming you store the results in `filteredNumbers`, `mappedStrings`, `totalSum`, `largestNumber`
224+ // Example: const filteredNumbers = [10, 25, 42, 15, 30];
225+ // Example: const mappedStrings = ['Number: 10', 'Number: 25', 'Number: 42', 'Number: 15', 'Number: 30'];
226+ // Example: const totalSum = 122;
227+ // Example: const largestNumber = 42;
228+ assertEqual ( filteredNumbers , [ 10 , 25 , 42 , 15 , 30 ] , "Easy Challenge: filteredNumbers" ) ;
229+ assertEqual ( mappedStrings , [ 'Number: 10' , 'Number: 25' , 'Number: 42' , 'Number: 15' , 'Number: 30' ] , "Easy Challenge: mappedStrings" ) ;
230+ assertEqual ( totalSum , 122 , "Easy Challenge: totalSum" ) ;
231+ assertEqual ( largestNumber , 42 , "Easy Challenge: largestNumber" ) ;
232+ 233+ // --- Medium Challenge Tests ---
234+ // Assuming you store the result in `chainedResult`
235+ // Example: const chainedResult = ['Number: 25', 'Number: 42', 'Number: 15', 'Number: 30'];
236+ assertEqual ( chainedResult , [ 'Number: 10' , 'Number: 25' , 'Number: 42' , 'Number: 15' , 'Number: 30' ] , "Medium Challenge: chainedResult" ) ;
237+ // Note: Part 3 (forEach) involves console logging, which is visually verified.
238+ 239+ // --- Choose & Use Challenge Tests ---
240+ // Assuming you store the results in `numericCount`, `sortedDescending`, `uniqueElements`, `transformedMixedArray`
241+ // Example: const numericCount = 5;
242+ // Example: const sortedDescending = [42, 30, 25, 15, 10];
243+ // Example: const uniqueElements = ['a', 'b', 'c', 'd'];
244+ // Example: const transformedMixedArray = [100, 'APPLE', 625, 1764, 'BANANA', 225, 900, 'CHERRY'];
245+ assertEqual ( numericCount , 5 , "Choose & Use: Challenge 1 (Value Count)" ) ;
246+ assertEqual ( sortedDescending , [ 42 , 30 , 25 , 15 , 10 ] , "Choose & Use: Challenge 2 (Descending Order)" ) ;
247+ assertEqual ( uniqueElements , [ 'a' , 'b' , 'c' , 'd' ] , "Choose & Use: Challenge 3 (Unique Collection)" ) ;
248+ assertEqual ( transformedMixedArray , [ 100 , 'APPLE' , 625 , 1764 , 'BANANA' , 225 , 900 , 'CHERRY' ] , "Choose & Use: Challenge 4 (Mixed Transformation)" ) ;
249+ 250+ // --- Advanced Challenge Tests ---
251+ // Assuming you store the results in `sumOfFilteredScores`, `countOf25`, `uniqueSortedScores`
252+ // Example: const sumOfFilteredScores = 230;
253+ // Example: const countOf25 = 3;
254+ // Example: const uniqueSortedScores = [60, 50, 45, 25, 15, 10, 5];
255+ assertEqual ( sumOfFilteredScores , 230 , "Advanced Challenge: Challenge 1 (Filtering and Summation)" ) ;
256+ assertEqual ( countOf25 , 3 , "Advanced Challenge: Challenge 2 (Counting Occurrences)" ) ;
257+ assertEqual ( uniqueSortedScores , [ 60 , 50 , 45 , 25 , 15 , 10 , 5 ] , "Advanced Challenge: Challenge 3 (Transformation and Uniqueness)" ) ;
258+
0 commit comments