• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

146
Vistas
¿Cómo realizo funciones de copia de seguridad de resultados de funciones para reiterar las funciones nuevamente?

Tengo una matriz que se pasa a través de un bucle forEach. A continuación, se pasa cada elemento y se comprueba si tiene un orden o caracteres específicos. Si es cierto que los caracteres deben eliminarse de la cadena, entonces se supone que debe volver a repetirse con la nueva cadena. (Cadena antigua menos los caracteres marcados)

Mi problema es el hecho de que todas las funciones todavía contienen localmente la cadena anterior (antes de que se eliminaran los caracteres). ¿Cómo puedo pasar la nueva cadena a las funciones sin restablecer el valor que tiene actualmente "deleteStringData"?

 let dnaArray = ["ACATATAGACATACGT","AAAAAATACATAGTAGTCGGGTAG","ATACATCGGGTAGCGT"]; dnaStrand = ""; //SORT THROUGH EACH ITEM IN ARRAY dnaArray.forEach((dnaStrand, index) => { if (findDna(dnaStrand)) { console.log("Case #" + index + " " + dnaStrand + ": YES"); } else { console.log("Case #" + index + " " + dnaStrand + ": NO"); }; }); function findDna(dnaStrand){ if (findHead(dnaStrand)){ if(findBody(dnaStrand)){ console.log("dna"); return true; } } else { return false; } }; function findHead(dnaStrand){ if (findGlobe(dnaStrand)){ if (findEyeSpots(dnaStrand)) { return true; } } else{ return false; } }; function findBody(dnaStrand){ if (findGlobe(dnaStrand) && findLegs(dnaStrand)) { return true; } else { return false; } }; function findGlobe(dnaStrand){ if(findMatch(dnaStrand, /(A+(TAC|CAT)A)/)){ return true; }else{ console.log("No Globe"); } }; function findEyeSpots(dnaStrand){ if(findMatch(dnaStrand, /T(CG*T)*AG/)){ return true; }else{ console.log("No Eyes"); } }; function findLegs(dnaStrand){ if(findMatch(dnaStrand, /CG*T/)){ return true; }else{ console.log("No Legs"); } }; function findMatch (dnaStrand, regex) { dnaStrand = String(dnaStrand); let isMatch = dnaStrand.match(regex); isMatch = String(isMatch[0]); //console.log(isMatch); if (isMatch) { deleteStringData(dnaStrand, isMatch); return true; } else { return false; } }; function deleteStringData (dnaStrand, string) { dnaStrand = dnaStrand.replace(string, ""); };
about 3 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Lo siento, pero estoy un poco ocupado y no tengo tiempo para leer todo su código. En base a su pregunta, puedo darle una guía básica.

asegúrese de que su función tome un parámetro. Si cada vez que el resultado final no es satisfactorio o simplemente desea repetirlo nuevamente, haga una declaración if, y si va a repetirlo, haga yourFunction(endresult) adentro. Si le preocupa el retraso, considere convertir su resultado final en una variable global y establecer un setTimeout para su función.

about 3 years ago · Juan Pablo Isaza Denunciar

0

Si declara las funciones de prueba dentro del ciclo, puede actuar en una sola instancia del hilo en ese ámbito sin necesidad de pasar ninguna referencia.

También puede usar Promesas para encadenar las pruebas.

Este puede no ser el método más eficiente, pero es muy legible.

 (async () => { const strands = [ 'ACATATAGACATACGT', 'AAAAAATACATAGTAGTCGGGTAG', 'ATACATCGGGTAGCGT' ]; const results = []; async function analyze(strand, index) { let result = { 'case' : parseInt(index), strand }; function findMatch(pattern) { return new Promise((resolve, reject) => { let m = strand.match(pattern)[0]; if (m) { strand = strand.replace(m, ''); resolve(true); } else { reject(); } }); } function findHead() { return findGlobe().then(findEyes); } function findBody() { return findGlobe().then(findLegs); } function findGlobe() { return findMatch(/(A+(TAC|CAT)A)/); } async function findEyes() { result.eyes = await findMatch(/T(CG*T)*AG/); } async function findLegs() { result.legs = await findMatch(/CG*T/); } function found() { result.dna = true; } function failed() { result.dna = false; } function done() { results.push(result); } await Promise.all([ findHead(), findBody() ]).then(found) .catch(failed) .finally(done); } for (let i in strands) { await analyze(strands[i], i); } console.log(results); })();

about 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda