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

115
Visualizações
JS cuenta números entre
datasets: [ { label: 'A', data: [82, 160, 10, 40, 179] }, { label: 'B', data: [101, 180, 80, 85, 119] }, { label: 'C', data: [124, 160, 99, 130, 43] }, { label: 'D', data: [66, 153, 82, 81, 97] } ]

cuál es la mejor (más corta) forma de hacer data como este:

 datasets: [ { label: 'A', data: [ {'fits': '180', 'counter': 0}, {'fits': '160+', 'counter': 2}, //160, 179 {'fits': '140+', 'counter': 0}, {'fits': '120+', 'counter': 0}, {'fits': '100+', 'counter': 0}, {'fits': '80+', 'counter': 1}, //82 {'fits': '60+', 'counter': 0}, ]}, { label: 'B', data: [ {'fits': '180', 'counter': 1}, //180 {'fits': '160+', 'counter': 0}, {'fits': '140+', 'counter': 0}, {'fits': '120+', 'counter': 0}, {'fits': '100+', 'counter': 2}, //101,119 {'fits': '80+', 'counter': 2}, //80,85 {'fits': '60+', 'counter': 0}, ]}, { label: 'C', data: [ {'fits': '180', 'counter': 0}, {'fits': '160+', 'counter': 1}, //160 {'fits': '140+', 'counter': 0}, {'fits': '120+', 'counter': 2}, //124, 130 {'fits': '100+', 'counter': 0}, {'fits': '80+', 'counter': 1}, //99 {'fits': '60+', 'counter': 0}, ]}, { label: 'D', data: [ {'fits': '180', 'counter': 0}, {'fits': '160+', 'counter': 0}, {'fits': '140+', 'counter': 1}, //153 {'fits': '120+', 'counter': 0}, {'fits': '100+', 'counter': 0}, {'fits': '80+', 'counter': 3}, //82,81,97 {'fits': '60+', 'counter': 1}, //66 ]} ]
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

 const datasets = [ { label: 'A', data: [82, 160, 10, 40, 179] }, { label: 'B', data: [101, 180, 80, 85, 119] }, { label: 'C', data: [124, 160, 99, 130, 43] }, { label: 'D', data: [66, 153, 82, 81, 97] }, ]; const handleDatasets = (datasets) => { const fits = [180, 160, 140, 120, 100, 80, 60]; return datasets.map((set) => { return { ...set, data: fits.map((num, i) => { return { fits: num, counter: set.data.filter((dataNum) => (dataNum >= num && (fits[i - 1] ? dataNum < fits[i - 1] : true))).length, }; }), }; }); }; console.log(handleDatasets(datasets));

about 4 years ago · Juan Pablo Isaza Relatório

0

Simplemente puede redondearlos todos hacia abajo al incremento más cercano de 20 y agruparlos, finalmente mapeándolos contra sus rangos.

 const input = [{ label: 'A', data: [82, 160, 10, 40, 179] }, { label: 'B', data: [101, 180, 80, 85, 119] }, { label: 'C', data: [124, 160, 99, 130, 43] }, { label: 'D', data: [66, 153, 82, 81, 97] }] const fitArr = [180, 160, 140, 120, 100, 80, 60]; const result = input.map(({ data, ...rest }) => { const dataMap = data .reduce((a, d) => { const fit = ~~(d / 20) * 20; a[fit] = (a[fit] ?? 0) + 1; return a }, {}); return { ...rest, data: fitArr.map(fits => ({ fits, count: dataMap[fits] ?? 0 })) } }); console.log(result);

Lo bueno de este enfoque es que se convierte fácilmente en genérico, aquí acepta un increment y un min y max del rango y devuelve el resultado esperado.

 function mapFitForRange(dataSets, { inc = 1, min = 0, max = 10 }) { const fitArr = []; for (let i=max; i>=min; i-=inc){ fitArr.push(i); } return dataSets.map(({ data, ...rest }) => { const dataMap = data .reduce((a, d) => { const fit = ~~(d / inc) * inc; a[fit] = (a[fit] ?? 0) + 1; return a }, {}); return { ...rest, data: fitArr.map(fits => ({ fits, count: dataMap[fits] ?? 0 })) } }); } const input = [{ label: 'A', data: [82, 160, 10, 40, 179] }, { label: 'B', data: [101, 180, 80, 85, 119] }, { label: 'C', data: [124, 160, 99, 130, 43] }, { label: 'D', data: [66, 153, 82, 81, 97] }]; console.log(mapFitForRange(input, { inc: 20, min: 60, max: 180 })) // or change the increment and range console.log(mapFitForRange(input, { inc: 10, min: 0, max: 100 }))
 .as-console-wrapper { max-height: 100% !important; top: 0; } .as-console-row::after { display: none !important; }

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