#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)
).