Advertisement
CLooker

map over arr, group seq identical items together

Dec 28th, 2017
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function recurCheck (arr, index) {
  2.     let flag = true;
  3.     let localIndex = index;
  4.     for (i = localIndex; flag === true;) {
  5.         if (arr[localIndex + 1] === arr[index]) {
  6.             localIndex++
  7.         }
  8.         else {
  9.             flag = false;
  10.         }
  11.     }
  12.     return {start: index, stop: localIndex}
  13. }
  14.  
  15. function arrStartStop (arr) {
  16.     let checkForNestedArr = arr.filter(item => Array.isArray(item));
  17.    
  18.     if (checkForNestedArr.length) {
  19.        
  20.         return "nested array"
  21.     }
  22.    
  23.         let newArr = [];
  24.         for (i = 0; i < arr.length; i++) {
  25.             newArr.push(recurCheck(arr, i));
  26.         }
  27.        
  28.         return newArr.map((obj, index) => {
  29.             if (obj.start !== obj.stop) {
  30.                 let localArr = [];
  31.                 for (i = 0; i < (obj.stop - obj.start + 1); i++) {
  32.                     localArr.push(arr[obj.stop]);
  33.                 }
  34.                 return localArr;
  35.             }
  36.             else {
  37.                 if (obj.stop !== newArr[index - 1].stop) {
  38.                     return [arr[obj.stop]];
  39.                 }
  40.             }
  41.         })
  42.         .filter(item => item !== undefined)
  43.    
  44.    
  45. }
  46.  
  47. arrStartStop([1, 1, 2, 1, 1, 1, 3, 3])
  48. arrStartStop(["a", "a", "b", "b", "c"])
  49. arrStartStop([[1, 2], [1, 2], [3, 4]])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement