Guest User

ArrayManipulator

a guest
Jul 4th, 2020
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function arrayManipulator(array, manipulations) {
  2.     let actualManipulation = [];
  3.  
  4.     let index = 0;
  5.     let element = 0;
  6.  
  7.     while (manipulations.length > 0) {
  8.         actualManipulation = manipulations.shift().split(' ');
  9.         switch (actualManipulation.shift()) {
  10.             case 'add':
  11.                 index = Number(actualManipulation.shift());
  12.                 if (index < 0) {
  13.                     index = 0;
  14.                     element = Number(actualManipulation.shift());
  15.                     array.splice(index, 0, element);
  16.                 } else {
  17.                     element = Number(actualManipulation.shift());
  18.                     array.splice(index, 0, element);
  19.                 }
  20.                 break;
  21.             case 'addMany':
  22.                 index = Number(actualManipulation.shift());
  23.                 let many = 0;
  24.                 for (let i = 0; i < actualManipulation.length; i++) {
  25.                     if (index < 0) {
  26.                         index = 0;
  27.                         many = Number(actualManipulation[i]);
  28.                         array.splice(index + i, 0, many);
  29.                     } else {
  30.                         many = Number(actualManipulation[i]);
  31.                         array.splice(index + i, 0, many);
  32.                     }
  33.                 }
  34.                 break;
  35.             case 'contains':
  36.                 element = Number(actualManipulation.shift());
  37.                 // if (array.indexOf(element) === -1) {
  38.                 //     console.log('-1');
  39.                 // } else {
  40.                 //     console.log('0');
  41.                 // }
  42.                 console.log(array.indexOf(element));
  43.                 break;
  44.             case 'remove':
  45.                 index = Number(actualManipulation.shift());
  46.                 if (index < 0 || index > array.length - 1) {
  47.                 } else {
  48.                     array.splice(index, 1);
  49.                 }
  50.                 break;
  51.             case 'shift':
  52.                 index = Number(actualManipulation.shift());
  53.                 index = index % array.length;
  54.                 let arrayForShift = array.slice(index - 1);
  55.                 if (index < 0) {
  56.                     index = 0;
  57.                     array.splice(index, 0);
  58.                     for (let i = arrayForShift.length - 1; i > 0; i--) {
  59.                         array.unshift(arrayForShift[i]);
  60.                         array.pop();
  61.                     }
  62.                 } else {
  63.                     array.splice(index, 0);
  64.                     for (let i = arrayForShift.length - 1; i > 0; i--) {
  65.                         array.unshift(arrayForShift[i]);
  66.                         array.pop();
  67.                     }
  68.                 }
  69.                 break;
  70.             case 'sumPairs':
  71.                 let sumArr = [];
  72.                 let lastNumFromOddArr = 0;
  73.                 if (array.length % 2 !== 0) {
  74.                     lastNumFromOddArr = Number(array.pop());
  75.                     for (let i = 0; i < array.length; i += 2) {
  76.                         sumArr.push(Number(array[i]) + Number(array[i + 1]));
  77.                     }
  78.                     sumArr.push(lastNumFromOddArr);
  79.                 } else {
  80.                     for (let i = 0; i < array.length; i += 2) {
  81.                         sumArr.push(Number(array[i]) + Number(array[i + 1]));
  82.                     }
  83.                 }
  84.                 array = sumArr;
  85.  
  86.                 break;
  87.         }
  88.  
  89.         if (manipulations[0] === 'print') {
  90.             break;
  91.         }
  92.     }
  93.     console.log(`[ ${array.join(', ')} ]`);
  94. }
Add Comment
Please, Sign In to add comment