Estaba intentando completar este problema como novato, y veo elementos adicionales dentro de mi matriz devuelta después de mi bucle.
In DNA strings, symbols "A" and "T" are complements of each other, as "C" and "G". You have function with one side of the DNA, you need to get the other complementary side.Aquí está mi solución
let dnaComStrand = []; const DNAStrand = function(dnaStrand) { for (let i = 0; i < dnaStrand.length; i++) { if (dnaStrand[i] === `A`) { dnaComStrand[i] = `T`; } else if (dnaStrand[i] === `T`) { dnaComStrand[i] = `A`; } else if (dnaStrand[i] === `C`) { dnaComStrand[i] = `G`; } else if (dnaStrand[i] === `G`) { dnaComStrand[i] = `C`; } } // return dnaComStrand.join(``); return dnaComStrand; }; console.log(DNAStrand(`GCATA`));sin embargo, en la consola que estaba viendo
Array(5) [ "C", "G", "T", "A", "T" ]lo que se volvió aún más confuso si intentaba llamar a la función nuevamente.
let dnaComStrand = []; const DNAStrand = function(dnaStrand) { for (let i = 0; i < dnaStrand.length; i++) { if (dnaStrand[i] === `A`) { dnaComStrand[i] = `T`; } else if (dnaStrand[i] === `T`) { dnaComStrand[i] = `A`; } else if (dnaStrand[i] === `C`) { dnaComStrand[i] = `G`; } else if (dnaStrand[i] === `G`) { dnaComStrand[i] = `C`; } } // return dnaComStrand.join(``); return dnaComStrand; }; console.log(DNAStrand(`GCATA`)); console.log(DNAStrand([`T`, `C`, `G`]));lo que resultó en
Array(5) [ "A", "G", "C", "A", "T" ]¿De dónde vienen estos elementos adicionales?
Tu puedes hacer:
const hash = { A: 'T', T: 'A', C: 'G', G: 'C', } const DNAStrand = dnaStrand => dnaStrand.split('').map(c => hash[c]) // 1 const dnaComStrand1 = DNAStrand(`GCATA`) console.log(dnaComStrand1) // 2 const dnaComStrand2 = DNAStrand(dnaComStrand1.join('')) console.log(dnaComStrand2)Reinicialice la matriz con un nuevo conjunto de elementos dentro de la función y antes del ciclo.