1
votes

Comment puis-je pousser un objet dans l'index zéro du tableau à l'intérieur d'un tableau en angulaire

J'ai une API backend qui donne des données dans ce format lorsqu'elle n'est pas vide. Je dois toujours pousser toutes les nouvelles données provenant de l'utilisateur dans le 0e index du premier tableau.

  arr: any = [];

  constructor() {}

  submit(data){
    const dataObj = {
      name: 'Test name',
      type: 'Test type',
    }
    this.arr[0].push(dataObj)
    console.log('Result array - ', this.arr)
  }

Le code ci-dessous fonctionne très bien avec des données non vides. Mais, si les données de l'API sont vides, cela donne Impossible de lire la propriété 'push' d'une erreur non définie .

[
  [
   {
      name: 'Name 1',
      type: 'Type 1'
    },
    {
      name: 'Name 2',
      type: 'Type 2'
    }
  ],
  [
    {
      name: 'Name 4',
      type: 'Type 4'
    },
    {
      name: 'Name 5',
      type: 'Type 5'
    }
  ]
]

J'ai créé un exemple de travail utilisant Stackblitz. Quelqu'un pourrait-il s'il vous plaît aider?


0 commentaires

3 Réponses :


1
votes

Vous pouvez tester s'il est vide, et d'abord pousser un tableau vide s'il est:

this.arr[0].unshift(dataObj);

Vous dites également que vous voulez le pousser vers le 0e index du premier tableau . Cela résout donc la partie «premier tableau». Si vous voulez vraiment le pousser vers l'index 0th du premier tableau, vous utilisez unshift:

submit(data){
  const dataObj = {
    name: 'Test name',
    type: 'Test type',
  }

  if (!this.arr[0]) {
    this.arr.push([]);
  }

  this.arr[0].push(dataObj);
  console.log('Result array - ', this.arr);
}


1 commentaires

Fantastique! La vérification de arr [0] a permis de résoudre le problème.



0
votes

Vous pouvez utiliser unshift pour cela.

const arr = [1, 2, 3];
[0].concat(arr); // [0, 1, 2, 3];

Veuillez noter qu'il s'agit d'une fonction de mutation.

Vous pouvez également utiliser:

const arr = [1, 2, 3];
arr.unshift(0); // [0, 1, 2, 3];

Cela ne modifie pas le tableau existant.


0 commentaires

0
votes

Il y a étonnamment plusieurs façons de saisir un élément en 0ème position. Vous pouvez y parvenir avec push () et shift () comme d'autres réponses l'ont mentionné. Vous pouvez également le faire avec splice () méthode.

const arr1 = [1, 2, 3];
arr1.splice(0, 0, 4); // <-- enter in pos. 0
console.log('Position 0: ', arr1);

const arr2 = [1, 2, 3];
arr2.splice(1, 0, 4); // <-- enter in pos. 1
console.log('Position 1:', arr2);


0 commentaires