t_sh0w

08. Array Manipulator

Feb 20th, 2020
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function executeCommandsOverArray(integers, commands) {
  2.   let currentCommand = commands.shift();
  3.  
  4.   function add(arr, tokens) {
  5.     arr.splice(tokens[0], 0, Number(tokens[1]));
  6.     return arr;
  7.   }
  8.  
  9.   function addMany(arr, tokens) {
  10.     // може и със spread operator
  11.     let index = tokens.shift();
  12.  
  13.     for (let element of tokens) {
  14.       arr.splice(index++, 0, element);
  15.     }
  16.  
  17.     return arr;
  18.   }
  19.  
  20.   function remove(arr, tokens) {
  21.     arr.splice(Number(tokens[0]), 1);
  22.     return arr;
  23.   }
  24.  
  25.   function shift(arr, tokens) {
  26.     let position = Number(tokens[0]);
  27.     while (position > 0) {
  28.       let element = arr.shift();
  29.       arr.push(element);
  30.       position--;
  31.     }
  32.     return arr;
  33.   }
  34.  
  35.   function sumPairs(arr) {
  36.     let output = [];
  37.     while (arr.length > 0) {
  38.       let a = arr.shift() || 0;
  39.       let b = arr.shift() || 0;
  40.  
  41.       output.push(a + b);
  42.     }
  43.  
  44.     return output;
  45.   }
  46.  
  47.   while (currentCommand !== "print") {
  48.     let tokens = currentCommand.split(" ");
  49.  
  50.     switch (tokens.shift()) {
  51.       case "add":
  52.         integers = add(integers, tokens);
  53.         break;
  54.  
  55.       case "addMany":
  56.         integers = addMany(integers, tokens);
  57.         break;
  58.  
  59.       case "contains":
  60.         console.log(integers.indexOf(Number(tokens[0])));
  61.  
  62.         break;
  63.  
  64.       case "remove":
  65.         integers = remove(integers, tokens);
  66.  
  67.         break;
  68.  
  69.       case "shift":
  70.         integers = shift(integers, tokens);
  71.         break;
  72.  
  73.       case "sumPairs":
  74.         integers = sumPairs(integers);
  75.         break;
  76.     }
  77.  
  78.     currentCommand = commands.shift();
  79.   }
  80.  
  81.   return `[ ${integers.join(", ")} ]`;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment