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

154
Visualizações
Necesito restar una clave, de una matriz de objetos, de otra clave de otra matriz de objetos

Tengo las siguientes dos matrices:

 const firstArray = [{startDate: 5, number: 15}, {startDate: 25, number: 10}, {startDate: 26, number: 10}]; const secondArray= [{startDay: 2, endDay:10, number: 15}, {startDay: 20, endDay:30, number: 20}];

si startDate está entre startDay y endDay , tengo que restar number de firstArray y el number de secondArray creando una nueva clave con resultado

Como resultado, tengo que poner una nueva clave en firstArray con el resultado:

 const firstArray = [{startDate: 5, number: 15, result: 0}, {startDate: 25, number: 25, result: -10}, {startDate: 26, number: 25, result: 0}];

si tengo más de una fecha de inicio en el mismo rango (entre el día de inicio y el día de finalización) tengo que agregar al último resultado de ese rango

El código que tengo por ahora:

 firstArray.map(el => ({...el, result: el.number - here's number from the secondArray according to the requirements}))
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

El mapa no funcionará muy bien para recorrer dos matrices y cambiar valores.

Simplemente use un ciclo for simple, verifique sus condiciones entre firstArray[i] y secondArray[i] , luego agregue el valor a firstArray[i].result

 const firstArray = [{startDate: 5, number: 15}, {startDate: 25, number: 20}]; const secondArray= [{startDay: 2, endDay:10, number: 10}, {startDay: 20, endDay:30, number: 20}]; for (let i = 0; i < Math.min(firstArray.length, secondArray.length); i++) if (secondArray[i].startDay < firstArray[i].startDate && firstArray[i].startDate < secondArray[i].endDay) firstArray[i].result = firstArray[i].number - secondArray[i].number; console.log(firstArray);

about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando usa dos o más arreglos, necesita saber con qué índice está trabajando. Además, para obtener el mejor rendimiento, evite cualquier tipo de función de devolución de llamada, use bucles simples en su lugar:

 const firstArray = [{startDate: 5, number: 15}, {startDate: 25, number: 10}, {startDate: 26, number: 10}]; const secondArray= [{startDay: 2, endDay:10, number: 15}, {startDay: 20, endDay:30, number: 20}]; for(let i = 0, first, second, result = 0; i < firstArray.length; i++) { first = firstArray[i]; second = secondArray[i]; if (second && first.startDate >= second.startDay && first.startDate <= second.endDay) result = first.number - second.number; else result += first.number; first.result = result; } console.log(firstArray);

Usar map() también funcionaría y produciría un código un poco más corto, pero es más lento y muy innecesario:

 const firstArray = [{startDate: 5, number: 15}, {startDate: 25, number: 10}, {startDate: 26, number: 10}]; const secondArray= [{startDay: 2, endDay:10, number: 15}, {startDay: 20, endDay:30, number: 20}]; firstArray.map((first, i) => { const second = secondArray[i]; if (second && first.startDate >= second.startDay && first.startDate <= second.endDay) first.result = first.number - second.number; else first.result = ((firstArray[i-1]||{}).result || 0) + first.number; }); console.log(firstArray);

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