fork download
  1. const regSlice = /^\d+(,\d+){0,2}$/;
  2.  
  3. function proxedArray(array) {
  4. return new Proxy(array, {
  5. get: (obj, key) => {
  6. if (typeof key == "string") {
  7. //console.log(key); 0,9,2
  8. if (regSlice.test(key)) {
  9. let [start, stop, step] = key.split(',').map((v)=>parseInt(v));
  10. stop = (stop != undefined)? stop : start + 1;
  11. step = (step != undefined)? step : 1;
  12. let c= step-1;
  13. return obj.slice(start, stop).filter((e,i)=> ((c<step)?c++:c=1, c%step==0));
  14. }
  15. }
  16. return obj[key];
  17. }
  18. });
  19. }
  20.  
  21. const a = proxedArray([1,2,3,4,5,6,7,8,9,10]);
  22.  
  23. console.log(a[[0, 9, 2]]);
Success #stdin #stdout 0.05s 16808KB
stdin
Standard input is empty
stdout
1,3,5,7,9