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

192
Views
Contando horas dentro de una matriz para una identificación específica

Estoy tratando de contar dinámicamente las horas trabajadas para una identificación individual. Actualmente, si quiero contar las horas para la identificación 1, por ejemplo, tengo que codificar el valor de identificación y hacer el conteo. ejemplo a continuación. Estoy usando tablas de datos, por lo que eventualmente habrá cientos de filas.

var array = [{id: 1, horas: 10}, {id: 1, horas: 12}, {id: 2, horas: 6}, {id: 2, horas: 11} {id: 3, horas: 12}, {id: 3, horas: 8}]

 var array = dataTable.rows().data().toArray(); array.filter((h) => { if (h.id == '1' && (count += h.hours) > 5) { 'do something' } else {'do something'} })

¿Cómo cuento las horas de cada 'id' dinámicamente sin codificar el valor de id gracias

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

0

Parece que podría usar .map() aquí sobre el filter . Envolvería su filtro/mapa en una función con un argumento de id de esa manera, puede pasar la identificación cada vez que llama a la función, sin codificarla.

 var array = [{id: 1, hours: 10},{id: 1, hours: 12}, {id: 2, hours: 6}, {id: 2, hours: 11} {id: 3, hours: 12}, {id: 3, hours: 8}] const countHours = (id) => { array.map(item => { if (item.id === id && item.hours > 5) { return 'do something' } else { return 'do something'} }) } // call it like so... countHours(1)
about 4 years ago · Juan Pablo Isaza Report

0

Podría hacer una función para filtrar la matriz y usar reducir para sumar todos los valores de 'horas'.

 var arr = [{id: 1, hours: 10},{id: 1, hours: 12}, {id: 2, hours: 6}, {id: 2, hours: 11}, {id: 3, hours: 12}, {id: 3, hours: 8}] function sumIdHours(id){ var hourSum = arr.filter(x => x.id === id).reduce((a, b) => a + b.hours, 0) return hoursSum } //eg sumIdHours(1)
about 4 years ago · Juan Pablo Isaza Report

0

Podría envolver esta lógica en una función que reciba el argumento id:

 function hoursById (id) { let count = 0; const array = dataTable.rows().data().toArray(); array.forEach((h) => { if (h.id == id && (count += h.hours) > 5) { 'do something' } else { 'do something'} }) return count; }

Entonces puedes invocar la función como

 hoursById('1') // return count for id 1 hoursById('2') // return count for id 2
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!