Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
cadena lógica Y sin longitud fija dada una matriz en Node.js y Typescript

Guión:

Estoy creando una función genérica que devuelve un booleano dependiendo de las declaraciones lógicas AND, sin embargo, la función es genérica y acepta múltiples tipos de objetos y matrices, y las declaraciones pueden variar según los objetos.

por el momento tengo algo asi

 private async myFunction( myArray: myArrObj[], myObj : myObj, ): Promise<boolean> { return ( myArr.some( (a) => a.status1=== "*" || a.status1 === myObj.status1.status1Id ) && myArr.some( (a) => a.status2=== "*" || a.status2 === myObj.status2.status2Id ) && myArr.some( (a) => a.status3=== "*" || a.status3 === myObj.status3.status3Id ) && myArr.some( (a) => a.status4=== "*" || a.status4 === myObj.status4.status4Id ) ) }

el problema es no poder saber que tipo de matriz se pasa y cuantas comprobaciones se necesitan, como puedo hacer una devolucion? Mi idea era almacenar cada matriz. algún método en una matriz y unirlos con " && ", este enfoque requeriría ejecutar algo desde una cadena, que no estoy seguro de que sea lo más seguro, ya que eval no es seguro en absoluto.

para obtener los estados de myObj, podría usar un bucle for y almacenar la propiedad en una cadena. No se me ocurre una buena solución, así que siéntete libre de proponer algo nuevo si mi idea no es lo suficientemente buena.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Como señalaron otros en los comentarios, sería útil si tuviera un ejemplo reproducible con datos de muestra. Dicho esto, de tu comentario:

pero los estados y las identificaciones tienen nombres diferentes, algunas identificaciones son .nameId y otras son solo .id , pero los estados en sí tienen el mismo nombre, por lo que en lugar de estado1 y obEstado1 realmente deberían ser estado1 y estado1

Desglosando esto:

pero los estados y las identificaciones tienen nombres diferentes, algunas identificaciones son .nameId y otras son solo .id

Podría intentar ver si nameId existe y volver a id .

pero los estados en sí tienen el mismo nombre, por lo que en lugar de estado1 y obEstado1, en realidad debería ser estado1 y estado1

Cuando las entradas de myArr comparten claves con myObj , simplemente puede recorrer las claves de myObj .

 async function myFunction(myArr, myObj) { // Fallback value for if .nameId and .id both don't exist. // Falling back to `undefined` would cause a bug / false positives. const notFound = Symbol(); // Loop through every key:value pair in the input object. return Object.entries(myObj).every(([myObjKey, myObjValue]) => { // Handle both `.nameId` and `.id` const id = myObjValue[`${myObjKey}Id`] ?? myObjValue.id ?? notFound; // If `myArrObj`'s children only ever contain exactly // a single key { status2: { someRandomKey: 123 } }, then you // could use myObjValue[Object.keys(myObjValue)[0]]; // For this key--for example "status1"--is there *any* array entry // in `myArrObj` that has the same key and value or "*"? return myArr.some((a) => { return a[myObjKey] === '*' || a[myObjKey] === id; }); }); }

Con los siguientes datos de muestra:

 const sampleArr = [ { status3: "*" }, { status2: 234 }, { status1: 123, thisIsAnUnusedKey: true }, { status4: 456 }, { name: "Foobar" }, { thisIsAnUnusedArrayEntry: true }, ]; const sampleObj = { status1: { status1Id: 123, }, status2: { status2Id: 234, }, status3: { status3Id: 345, }, status4: { // Different key id: 456, }, name: { // Different dataType nameId: "Foobar" } }; myFunction(sampleArr, sampleObj).then(console.log); // Logs `true`
about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!