I have array like this:
let arr = [ 
  { x: 31, y: 8 }, // get 1
  { x: 32, y: 8, monster: { is: true, id: '19216' } }, // get special
  { x: 32, y: 9 },
  { x: 32, y: 10 },
  { x: 32, y: 11 }, // get 4
  { x: 32, y: 12 },
  { x: 32, y: 13 },
  { x: 32, y: 14 },
  { x: 32, y: 15 }, // get 8
  { x: 32, y: 16 }  // get last
];
what I want to achieve is to get every fourth, get special one (the one with monster object) and also last one. So the output would be
[
 {x: 31, y: 8},
 {x: 32, y: 8, monster: { is: true, id: '19216' } },
 {x: 32, y: 11},
 {x: 32, y: 15},
 {x: 32, y: 16}
]
It was easy to get every fourth and last one like this:
let arrThinned = [];
for (let i = 0; i < arr.length; i = i + 4) {
  arrThinned.push({
    x: arr[i].x,
    y: arr[i].y,
  });
}
if((arr.length - 1) % 4 !== 0) {
  /* add also last one if not already added */
  arrThinned.push({
    x: arr[arr.length - 1].x,
    y: arr[arr.length - 1].y
  });
};
but I can't figure out how to additionally check if there is this special one beetwen every fourth and also add it to thinnedArr array. I need to keep the order. Demo of above code.
 
     
    