Advertisement
padznich

Untitled

Oct 18th, 2017
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. function customFilter(array, callback) {
  3.     var result = [];
  4.         for (var i = 0; i < array.length; i++) {
  5.             if (callback(array[i])) {
  6.                 result.push(array[i]);
  7.             }
  8.         }
  9.     return result;
  10. }
  11.  
  12.  
  13.  
  14. function check_filter(origin_array, examine_filter, arrow_function) {
  15.     // Get filtered arrays
  16.     var filtered_origin_array = origin_array.filter(arrow_function);
  17.     var filtered_examine_array = customFilter(origin_array, arrow_function);
  18.     // Check for correct filtering. Return "true" in case of correct filter, "false" - otherwise
  19.     if (Math.min.apply(Math, filtered_examine_array) == Math.min.apply(Math, filtered_origin_array) &&
  20.         Math.max.apply(Math, filtered_examine_array) == Math.max.apply(Math, filtered_origin_array) &&
  21.         filtered_examine_array.length == filtered_origin_array.length) {
  22.         return true
  23.     } else {
  24.         return false
  25.     }
  26.  
  27. }
  28.  
  29.  
  30. function main_check(examine_filter) {
  31.  
  32.     // Test cases
  33.     // Case 1
  34.     var arr_1 = [-5, -2, 0, 1, 2, 5, 9];
  35.     arrow_fn_1 = item => item > 1;
  36.     result_1 = check_filter(arr_1, examine_filter, arrow_fn_1);
  37.     // Case 2
  38.     var arr_2 = [0, 3, 4, 7, 12];
  39.     arrow_fn_2 = item => item < 5;
  40.     result_2 = check_filter(arr_2, examine_filter, arrow_fn_2);
  41.     // Case 3
  42.     var arr_3 = [0.1, 12.3, 44.12, -70.23, 0.12];
  43.     arrow_fn_3 = item => item < 5;
  44.     result_3 = check_filter(arr_3, examine_filter, arrow_fn_3);
  45.     // Case 4
  46.     var arr_4 = [];
  47.     arrow_fn_4 = item => item > 7;
  48.     result_4 = check_filter(arr_4, examine_filter, arrow_fn_4);
  49.     // Case 5
  50.     var arr_5 = [0, 0, 0];
  51.     arrow_fn_5 = item => item == 0;
  52.     result_5 = check_filter(arr_5, examine_filter, arrow_fn_5);
  53.     // Case 6
  54.     var arr_6 = ['s', 3, []];
  55.     arrow_fn_6 = item => item == 0;
  56.     result_6 = check_filter(arr_6, examine_filter, arrow_fn_6);
  57.  
  58.     // Result conclusion
  59.     if (result_1 && result_2 && result_3 && result_4 && result_5 && result_6) {
  60.         return true
  61.     } else {
  62.         return false
  63.     }
  64. }
  65.  
  66. console.log(main_check(customFilter));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement