Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
Recuperar la cantidad condicional de objetos de la matriz

Tratando de averiguar cómo recuperar una cantidad máxima de registros de una matriz de objetos

Digamos que tengo una variedad de objetos como este (he reducido la cantidad para facilitar la lectura, pero puede haber cientos)

 [ { name: 'Roger East', kick_off: 2021-10-01T14:00:00.000Z }, { name: 'Anthony Taylor', kick_off: 2021-10-01T14:00:00.000Z }, { name: 'Mike Dean', kick_off: 2021-09-20T14:00:00.000Z }, { name: 'Roger East', kick_off: 2021-09-19T14:00:00.000Z }, { name: 'Mike Dean', kick_off: 2021-08-10T14:00:00.000Z }, { name: 'Anthony Taylor', kick_off: 2021-08-09T14:00:00.000Z } ]

Para mi ejemplo, es posible que solo desee recuperar 1, 2, 3 o 4 registros de cada name único (ordenados por la última fecha de inicio, aunque están en orden de inicio en la matriz, por lo que es posible que no sea necesario tener esa lógica)

Entonces, digamos que en mi objeto original tengo 100 registros para Roger East, 90 registros para Mike Dean y 50 registros para Anthony Taylor. Me gustaría devolver los primeros 3 registros para cada nombre en la matriz (espero que tenga sentido)

Entonces terminaría con

 [ { name: 'Roger East', kick_off: 2021-10-01T14:00:00.000Z }, { name: 'Roger East', kick_off: 2021-10-01T14:00:00.000Z }, { name: 'Roger East', kick_off: 2021-09-20T14:00:00.000Z }, { name: 'Mike Dean', kick_off: 2021-09-19T14:00:00.000Z }, { name: 'Mike Dean', kick_off: 2021-08-10T14:00:00.000Z }, { name: 'Mike Dean', kick_off: 2021-08-10T14:00:00.000Z }, { name: 'Anthony Taylor', kick_off: 2021-08-09T14:00:00.000Z }, { name: 'Anthony Taylor', kick_off: 2021-08-09T14:00:00.000Z }, { name: 'Anthony Taylor', kick_off: 2021-08-09T14:00:00.000Z } ]

Gracias

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí estás:

 let data1 = [ { name: 'Roger East', kick_off: '2021-10-01T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-01T14:00:00.000Z' }, { name: 'Mike Dean', kick_off: '2021-09-20T14:00:00.000Z' }, { name: 'Roger East', kick_off: '2021-09-19T14:00:00.000Z' }, { name: 'Mike Dean', kick_off: '2021-08-10T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-08-09T14:00:00.000Z' } ]; let data2 = [ { name: 'Roger East', kick_off: '2021-10-01T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-01T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-02T14:00:00.000Z' }, { name: 'Mike Dean', kick_off: '2021-09-20T14:00:00.000Z' }, { name: 'Roger East', kick_off: '2021-09-19T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-06T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-11-07T14:00:00.000Z' }, { name: 'Mike Dean', kick_off: '2021-08-10T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-08-09T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-22T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-24T14:00:00.000Z' }, ]; const limitEachNameByNumber1 = 1; const limitEachNameByNumber2 = 3; function receiveFilteredData(data, limit) { let filteredData = []; let counter = {}; for (let record of data) { if (!counter[record.name]) { counter[record.name] = 0; } if (counter[record.name] >= limit) { continue; } filteredData.push(record); counter[record.name] ++; } return filteredData; } console.log(receiveFilteredData(data1, limitEachNameByNumber1)); console.log(receiveFilteredData(data2, limitEachNameByNumber2));

about 4 years ago · Juan Pablo Isaza Denunciar

0

esto es lo que puede hacer con el map y el filter

 let dataset = [{ name: 'Roger East', kick_off: '2021-10-01T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-10-01T14:00:00.000Z' }, { name: 'Mike Dean', kick_off: '2021-09-20T14:00:00.000Z' }, { name: 'Roger East', kick_off: '2021-09-19T14:00:00.000Z' }, { name: 'Mike Dean', kick_off: '2021-08-10T14:00:00.000Z' }, { name: 'Anthony Taylor', kick_off: '2021-08-09T14:00:00.000Z' } ] let names = [...new Set(dataset.map(d => d.name))] let firstuser = dataset.filter(x => x.name === names[0]) // use any index for unique entries with name let seconduser = dataset.filter(x => x.name === names[1]) let thirduser = dataset.filter(x => x.name === names[2]) console.log({ firstuser, seconduser, thirduser })

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const src = [{ name: "Roger East", kick_off: "2021-10-01T14:00:00.000Z" },{ name: "Anthony Taylor", kick_off: "2021-10-01T14:00:00.000Z" },{ name: "Mike Dean", kick_off: "2021-09-20T14:00:00.000Z" },{ name: "Roger East", kick_off: "2021-09-19T14:00:00.000Z" },{ name: "Mike Dean", kick_off: "2021-08-10T14:00:00.000Z" },{ name: "Anthony Taylor", kick_off: "2021-08-09T14:00:00.000Z" },{ name: "Roger East", kick_off: "2021-10-01T14:00:00.000Z" },{ name: "Anthony Taylor", kick_off: "2021-10-01T14:00:00.000Z" },{ name: "Mike Dean", kick_off: "2021-09-20T14:00:00.000Z" },{ name: "Roger East", kick_off: "2021-09-19T14:00:00.000Z" },{ name: "Mike Dean", kick_off: "2021-08-10T14:00:00.000Z" },{ name: "Anthony Taylor", kick_off: "2021-08-09T14:00:00.000Z" },{ name: "Roger East", kick_off: "2021-10-01T14:00:00.000Z" },{ name: "Anthony Taylor", kick_off: "2021-10-01T14:00:00.000Z" },{ name: "Mike Dean", kick_off: "2021-09-20T14:00:00.000Z" },{ name: "Roger East", kick_off: "2021-09-19T14:00:00.000Z" },{ name: "Mike Dean", kick_off: "2021-08-10T14:00:00.000Z" },{ name: "Anthony Taylor", kick_off: "2021-08-09T14:00:00.000Z" }]; const byName = src.reduce((acc, { name, kick_off }) => { if (!acc[name]) { acc[name] = []; } else { acc[name].push(kick_off); } return acc; }, {}); const result = Object.keys(byName).map((name) => byName[name].slice(0, 3).map(kick_off => ({ name, kick_off }))).flat() console.log(result)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda