Tengo la siguiente configuración de matriz en mi oninit:

 this.tests = [{
      status: 0,
      testresults: [{       
        name: 'test',
          id: 1
      }]
    }
    ]
    ;

    this.tests.push([{
      status: 1,
      testresults: [{       
        name: 'test2',
          id: 2
      }]
    }
    ]
    }]);

Esta matriz funciona como se esperaba. Mi objetivo es enviar los resultados de una consulta a la matriz testresults que se encuentra dentro de las pruebas.

  this.tests[0].testresults.push(this.qryresults);
  this.tests[1].testresults.push(this.qryresults);

El índice 0 funciona correctamente, el índice 1 devuelve el siguiente error:

"ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'push' of undefined
TypeError: Cannot read property 'push' of undefined"
4
user68288 26 feb. 2021 a las 23:58

3 respuestas

La mejor respuesta

Está empujando una matriz la segunda vez en lugar de un objeto adicional, lo que da como resultado un error porque la matriz que ha empujado no tiene la propiedad testresults. Consulte el fragmento de código a continuación para obtener una revisión funcional del código:

(function() {
  this.qryresults = "some test data"
  this.tests = [{
    status: 0,
    testresults: [{
      name: 'test',
      id: 1
    }]
  }];

  this.tests.push({ // <--- removed [ here
    status: 1,
    testresults: [{
      name: 'test2',
      id: 2
    }]
  });              // <--- removed ] here

  this.tests[0].testresults.push(this.qryresults);
  this.tests[1].testresults.push(this.qryresults);
  console.log(this.tests)
})()
2
etarhan 26 feb. 2021 a las 21:05

Empujas matriz a matriz. Entonces, debe agregar un objeto a la matriz como:

this.tests.push({
  status: 1,
  testresults: [{       
    name: 'test2',
      id: 2
  }]

});

0
Cəfərov Murad 26 feb. 2021 a las 21:02

Sí, puede solucionar este problema siguiendo el código;

tests = [{
    status: 0,
    testresults: [{
        name: 'test',
        id: 1
    }]
}];

qryresults = [{
    status: 1,
    testresults: [{
        name: 'test2',
        id: 2
    }]
}]

tests.push(...qryresults);
0
Yoshida Atsushi 26 feb. 2021 a las 21:06