Каковы плюсы и минусы выполнения манипуляций со строками этими способами?

#javascript #regex #string #function #ecmascript-6

#javascript #регулярное выражение #строка #функция #ecmascript-6

Вопрос:

Я выполняю очень простую задачу кодирования. Возвращает каждую n-ю букву строки. И, прежде чем это будет помечено как дубликат, у меня уже есть несколько решений. И я знаю, что в программировании, вероятно, есть много способов добиться того же результата. Но мне было интересно, есть ли какая-либо большая разница с точки зрения логики, удобочитаемости или просто синтаксиса в целом для следующих решений. Что можно было бы считать благоприятным решением? В этом примере я делаю каждые три. Если у вас есть лучшее решение, которое я хотел бы увидеть.

 function testcode(str){
  let newstr = '';
  for (let i=2; i<str.length; i =3) {
      newstr  = str[i]
  }
  return newstr;
}
testcode('hellostackoverflow');

function testcode(str){
  let newstr='';
  for (let i=0; i<str.length; i  ) {
      if ((i 1)%3 === 0){
        newstr  = str[i];
      }
  }
  return newstr;
}

testcode('hellostackoverflow');
  

Я также пробовал использовать регулярные выражения, но они не заменяют символы, если их не ровно 3.

 let str = "aaCaaCaaCaa";

let result = str.replace(/..(.)/g, "$1");
console.log(result);
//gives me CCCaa
  

Комментарии:

1. @CertainPerformance Они означают каждые три буквы .

Ответ №1:

Что можно было бы считать благоприятным решением?

Ваш первый. Это просто, как логически, так и синтаксически, что приводит к высокой удобочитаемости.

И, возможно, что более важно, это также более эффективно: требуется всего O(n/k) шагов (где k=3 в вашем примере), просматривая только каждый третий индекс / символ вместо каждого отдельного ( O(n) ).