Показать сообщение отдельно
  #10 (permalink)  
Старый 06.02.2019, 23:24
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Всё что смог сделать ) Работает, но я думаю код мудреный:
const oo=console.log;

String.prototype.slash=function(a,b=1){
  var s=this, l=s.length, i, f=(j=0)=>[s.slice(0,i),s.slice(i+j)];
  oo(s,b,a);
  if(a.length){ // a:string
    var c=0, m='indexOf', k=1;
    if(b==1){
      i=s[m](a);
      return i<0?s:f(1)
    };
    if(b<1){
      m='lastIndexOf';
      b=-b;
      k=-1
    };  
    while(c!=b){
      i=s[m](a,i+k);
      if(i<0){break};
      c++
    };
    return f(1)
  };
  if(Math.abs(a)>=l){return s};
  i=a>0?a:l+a;
  return f()
};

oo('lorem ipsum/dolor sit/amet'.slash('/',-2)); // -> [ 'lorem ipsum', 'dolor sit/amet' ]

Буду очень вам признателен за советы по возможному улучшению кода, спасибо!

Последний раз редактировалось Teamur, 07.02.2019 в 09:27.
Ответить с цитированием