Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

276
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda