Я делаю очень простую задачу по кодированию. Возвращает каждую 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.info(result);
//gives me CCCaa



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Which would be considered the favourable solution?
Ваш первый. Он прост как логически, так и синтаксически, что обеспечивает высокую удобочитаемость.
И, возможно, что более важно, он также более эффективен: он занимает всего O(n/k) шагов (где k=3 в вашем примере), рассматривая только каждый третий индекс/символ вместо каждого отдельного (O(n)).
@CertainPerformance Они означают каждые три буквы.