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

140
Visualizações
Declaración de cambio avanzado

Quiero recorrer una serie de proyectos, filtrar elementos con múltiples condiciones y enviarlos a la matriz de destino. El resultado debe tener 4 arreglos que contengan todos los proyectos que cumplieron con la condición de cada arreglo específico. Algo como esto

 // 4 cases of the parent array const arrayOverDeadline_overBudget = [] const arrayOverDeadline_withinBudget = [] const arrayOneMonthDeadline_OverBudget = [] const arrayOneMonthDeadline_withinBudget = [] export const filterArray = (array) => { const today = moment(); const oneMonthBefore = moment().add(1, "m"); array.forEach((item) => { switch (item.deadline && item.budget) { // over deadline && over budget // (deadline <= today) && (budget > 100%) case params.deadline <= today && params.budget >= 100: break; // over deadline && within budget // (deadline <= today) && (80% < budget < 100%) case params.deadline < today && params.budget < 100 && params.budget > 80: break; // within deadline && within budget // (today < deadline < oneMonthBefore) && (80% <= budget < 100%) case params.deadline > today && params.deadline < oneMonthBefore && params.budget < 100 && params.budget >= 80: break; // within deadline && over budget // (today < deadline < oneMonthBefore) && (budget >= 100%) case params.deadline > today && params.deadline < oneMonthBefore && params.budget > 100: break; default: break; } }); };

Busqué algunas respuestas y encontré Flags and Bitmasks pero no estaba seguro de cómo implementarlo en mis casos. También me preocupa la complejidad temporal de mi método. Cualquier sugerencia o idea será muy bienvenida y apreciada.

Actualizar:

  1. Condiciones añadidas.
  2. El propósito de la pregunta era preguntar si existen formas más eficientes de distribuir los elementos de la matriz en la ubicación deseada. Probé el enfoque if..elseif...else pero solo quería saber si hay formas "más limpias", y no tiene que usar la declaración de switch .
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Simplemente puede dividir esto en 2 variables booleanas:

  1. bool1 = is project over the deadline
  2. bool2 = is project over the budget

Cree un int a partir de estas variables ( bool1 desplazado a la derecha una vez + bool2 ) para obtener un valor entre [0,3] , y luego puede asignar este valor a la matriz de destino.

Ejemplo:

  1. bool1 = 0, bool2 = 0 . Valor objetivo = 00 (binary) = 0 . El valor objetivo 0 se asigna a por under deadline, under budget .
  2. bool1 = 0, bool2 = 1 . Valor objetivo = 01 (binary) = 1 . El valor objetivo 1 se asigna a por under deadline, over budget .
  3. bool1 = 1, bool2 = 0 . Valor objetivo = 10 (binary) = 2 . El valor objetivo 2 se asigna a over deadline, under budget .
  4. bool1 = 1, bool2 = 1 . Valor objetivo = 11 (binary) = 3 . El valor objetivo 3 se asigna a over deadline, over budget .

Puede generar este valor objetivo usando solo una línea de código y luego usar estos casos para decidir la matriz de destino debería eliminar la necesidad de escribir complicados bloques if-else.

Editar:

Agregar una implementación de muestra:

 const budget = 100, deadline = 100 const item_budget = 120, item_deadline = 80 const b1 = Number(item_deadline > deadline) const b2 = Number(item_budget > budget) const target = (b1 << 1) + b2 switch (target) { case 0: console.log("under deadline, under budget") break; case 1: console.log("under deadline, over budget") break; case 2: console.log("over deadline, under budget") break; default: console.log("over deadline, over budget") } // prints "under deadline, over budget"

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