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

80
Vistas
Filtrar datos de matrices

Lo que necesito es ordenar los datos que obtengo de una API en diferentes matrices, pero agregar el valor '0' donde no hay valor en 1 tipo pero está en el otro tipo/s. Ahora, ¿es esto posible con array.filter ya que es más rápido que un montón de bucles for y if?

Entonces, digamos que obtengo los siguientes datos de SQL a la API:

 Day Type Amount ----------------------- 12.1.2022 1 11 12.1.2022 2 4 13.1.2022 1 5 14.1.2022 2 9 16.1.2022 2 30

Si ejecuto este código:

 this.data = result.Data; let date = []; const data = { 'dataType1': [], 'dataType2': [], 'dataType3': [], 'dataType4': [] } /*only writing example for 2 types since for 4 it would be too long but i desire answer that works for any amount of types or for 4 types */ this.data.forEach(x => { var lastAddress = date[date.length - 1] if (x.type == 1) {dataType1.push(x.Amount) } if (x.type == 2) {dataType2.push(x.Amount) }} lastAddress != x.Day ? date.push(x.Day) : '';

La matriz que obtengo para type1 es [11,5] y para type2 obtengo [4,9,30] . Y para las fechas obtengo todas las fechas únicas.

Pero los datos que me gustaría son: [11,5,0,0] y [4,0,9,30] El tamaño de la matriz también debe coincidir con el tamaño de la matriz Day al final. que serían fechas únicas.. en este caso:

[12.1.2022, 13.1.2022, 14.1.2022, 16.1.2022]

Ya he intentado resolver esto con algunos bucles for, if y while, pero se complica demasiado, así que estoy buscando una alternativa.

También tengo 4 tipos, pero como referencia, solo escribí una muestra para 2.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

 const type1 = []; const type2 = []; data.forEach(item=>{ if(item.type==1){ type1.push(item.amount) type2.push(0) }else{ type1.push(0) type2.push(item.amount) } }) console.log(type1) console.log(type2)

over 4 years ago · Santiago Trujillo Denunciar

0

puede

  1. primero obtenga los valores uniq
  2. recorra los datos para crear una matriz de objetos con {date:string,values:number[]}
 //create a function: matrix(data:any[]) { const uniqTypes=data.reduce((a,b)=>a.indexOf(b.type)>=0?a: [...a,b.type],[]) const result=[] this.data.forEach((x:any)=>{ let index=result.findIndex(r=>r.date==x.date) if (index<0) { result.push({date:x.date,values:[...uniqTypes].fill(0)}) index=result.length-1; } result[index].values[uniqTypes.indexOf(x.type)]=x.amount }) return result } //and use like result=this.matrix(this.data);

NOTA: Puede crear el uniqType fuera de la función como variable y pasarlo como argumento a la función

apilar

over 4 years ago · Santiago Trujillo 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