• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

144
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error