繁体   English   中英

如何将 object 推送到 Angular 中的数组内的数组的第零索引中

[英]How do I push an object in zeroth index of array inside an array in Angular

我有一个后端 API 当它不为空时以这种格式提供数据。 我必须始终将来自用户的任何新数据推送到第一个数组的0th个索引中。

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

下面的代码适用于非空数据。 但是,如果 API 数据为空,则会给出Cannot read property 'push' of undefined error

  arr: any = [];

  constructor() {}

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

我使用 Stackblitz 创建了一个工作示例 有人可以帮忙吗?

您可以测试它是否为空,如果是,则首先推送一个空数组:

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);
}

你还说你想把它推到0th index of first array 所以这解决了“第一个数组”部分。 如果你真的想把它推到第一个数组的0th个索引,你可以使用unshift

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

你可以使用 unshift 。

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

请注意,它是一个变异的 function。

您还可以使用:

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

这不会改变现有数组。

在第 0 个 position 中输入元素的方法有很多种。 您可以使用push()shift()来实现它,就像其他答案提到的那样。 您也可以使用splice()方法来做到这一点。

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM