[英]How do i push an object into an array which is inside an object which is also inside an another array
[英]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.