Siento que mi solución es demasiado complicada. Si alguien puede sugerir uno más fácil, sería genial.
Es un desafío del bate de codificación. La tarea es:
Dada una cadena, devuelve una cadena hecha de los caracteres en los índices 0,1, 4,5, 8,9 ... de modo que "gatitos" produzca "kien".
Ejemplos
altPairs('kitten') → kien altPairs('Chocolate') → Chole altPairs('CodingHorror') → Congrr
Mi solución (funciona bien, pero parece demasiado amateur):
function altPairs(str) { // convert the string to an Array let newArr = str.split("") // create two emtpy Arrays to fill in with the characters of certain indexes from original Array // myArrOne will contain indexes 0,4,8... let myArrOne = []; // myArrTwo will contain indexes 1,5,9... let myArrTwo = []; // Loop through the original Array 2 times to push elements into myArrOne and myArrTwo for (let i = 0; i < newArr.length; i += 4) { myArrOne.push(newArr[i]) } for (let i = 1; i < newArr.length; i += 4) { myArrTwo.push(newArr[i]) } // create new Array. Loop through myArrTwo and myArrOne and push element to myArrtThree let myArrThree =[]; for (let i = 0; i <= myArrOne.length && i <= myArrTwo.length; i++){ myArrThree.push(myArrOne[i], myArrTwo[i]) } // myArrThree to a new string with join method let myString = myArrThree.join('') return myString }Un enfoque conciso sería usar una expresión regular: hacer coincidir y capturar 2 caracteres, luego hacer coincidir hasta 2 caracteres más y reemplazarlos con los 2 caracteres capturados. Vuelva a colocar sobre toda la cadena.
const altPairs = str => str.replace( /(..).{0,2}/g, '$1' ); console.log(altPairs('kitten'))// → kien console.log(altPairs('Chocolate'))// → Chole console.log(altPairs('CodingHorror'))// → Congrr(..) - unir y capturar 2 personajes (primer grupo de captura).{0,2} - coincidencia de cero a dos caracteres Reemplazar con $1 reemplaza con el contenido del primer grupo de captura.
Esta solución selecciona todos los caracteres en una iteración.
const altPairs = str => { let result = ''; for(let i = 0; i < str.length; i += 4){ result += str.substring(i, Math.min(str.length, i+2)); } return result; }; console.log( altPairs('kitten') ); console.log( altPairs('Chocolate') ); console.log( altPairs('CodingHorror') );