如何将对象数组推入数组?

4

loggedUser 作为 users 索引(未知)变量中的 object

// This is the users index of a variable containing multiple users which have a `docs` array.
users: [
    {id: '140255045', password: '72465091Be', email: 'a@gmail.com', tc: '1', dId: 1, name: 'Erkan', surname: 'Çalışkan', docs: []},
    {id: '1', password: '1', email: 'a@gmail.com', tc: '1', dId: 1, name: 'Erkan', surname: 'Çalışkan', docs: []},
    {id: '2', password: '2', email: 'a@gmail.com', tc: '1', dId: 2, name: 'Erkan', surname: 'Çalışkan', docs: []},
    {id: '3', password: '3', email: 'a@gmail.com', tc: '1', dId: 2, name: 'Erkan', surname: 'Çalışkan', docs: []}
]

这是我想要添加到对象中的数组:
var docs = [
    {
        type: '',
        piece: '',
        insti: '',
        desc: '',
        selected: '',
        date: ''
    }
];

var a = this.docs.push({
    type: this.docs.type,
    piece: this.docs.piece,
    insti: this.docs.insti,
    desc: this.docs.desc,
    selected: this.docs.selected,
    date: today
});

this.loggedUser.docs.push(a);

console.log(this.loggedUser);

错误:无法读取未定义的属性“push”

我想将docs数组推送到loggedUser.docs数组中。


你的 loggedUser 在数据对象中看起来像什么? - Boussadjra Brahim
1
这似乎在语法上不正确,但很难确定它是否只是从其他地方剥离出来的代码片段。看起来你正在定义一个具有用户和文档属性的对象,但突然间你有了函数代码,而没有终止对象定义?我可能会期望在docs定义之后加上逗号,然后再加上最后一部分的函数定义?否则,“this”指的是什么? - Darren Crabb
顺便提一下 - 这个错误基本上意味着它不知道这.docs是什么 - 它是未定义的。在解决了这个未定义的问题之前,推送部分都是无关紧要的。 - Darren Crabb
3个回答

2

将冒号 (:) 改为等于号 (=) 在对象或数组中,冒号用于将内容分配给一个id。

users = [
    {id:'140255045',password:'72465091Be',email:'a@gmail.com',tc:'1',dId:1,name:'Erkan',surname:'Çalışkan',docs:[]},
    {id:'1',password:'1',email:'a@gmail.com',tc:'1',dId:1,name:'Erkan',surname:'Çalışkan',docs:[]},
    {id:'2',password:'2',email:'a@gmail.com',tc:'1',dId:2,name:'Erkan',surname:'Çalışkan',docs:[]},
    {id:'3',password:'3',email:'a@gmail.com',tc:'1',dId:2,name:'Erkan',surname:'Çalışkan',docs:[]}
  ]

2
我认为users是数据对象属性,而不是局部变量。 - Boussadjra Brahim

0
如果users是一个变量的索引,你的代码应该像这样:
// Schema for `this.loggeduser`
{
    id: '140255045',
    password: '72465091Be',
    email: 'a@gmail.com',
    tc: '1',
    dId:1,
    name: 'Erkan',
    surname: 'Çalışkan',
    docs:[]
}

// Declare docs as an `Array` object variable in `this` context.
this.docs = [
    {
        type: '',
        piece: '',
        insti: '',
        desc: '',
        selected: '',
        date: ''
    }
];

// Push an object into the declared array.
// By now `this.docs` should contain 2 objects.
this.docs.push({
    type: this.docs.type,
    piece: this.docs.piece,
    insti: this.docs.insti,
    desc: this.docs.desc,
    selected: this.docs.selected,
    date: today
});

// Push `this.docs` `Array` object.
// If `this.loggedUser` exists and has `docs` property of type `Array` this should work.
this.loggedUser.docs.push(this.docs);

console.log(this.loggedUser)

0
如果您想将用户和文档保存在一个对象中,可以按照以下方式操作(我使用基本字符串简化了最终代码以展示其工作原理)。我创建了另一个名为“obj”的变量,用于在某个地方存储您的对象。

var obj = {
 users : [
   {id:'140255045',password:'72465091Be',email:'a@gmail.com',tc:'1',dId:1,name:'Erkan',surname:'Çalışkan',docs:[]},
   {id:'1',password:'1',email:'a@gmail.com',tc:'1',dId:1,name:'Erkan',surname:'Çalışkan',docs:[]},
   {id:'2',password:'2',email:'a@gmail.com',tc:'1',dId:2,name:'Erkan',surname:'Çalışkan',docs:[]},
   {id:'3',password:'3',email:'a@gmail.com',tc:'1',dId:2,name:'Erkan',surname:'Çalışkan',docs:[]}
    ],
 
 docs: [{ type : '',
    piece : '',
    insti : '',
    desc : '',
    selected : '',
    date : ''}] 
}
 

obj.docs.push({ type : 'test',
    piece : 'test',
    insti : 'test',
    desc : 'test',
    selected : 'test',
    date : 'test'});
 
  
console.log(obj.docs);

你也可以在同一对象中使用函数来实现这个。

var obj = {
 users : [
   {id:'140255045',password:'72465091Be',email:'a@gmail.com',tc:'1',dId:1,name:'Erkan',surname:'Çalışkan',docs:[]},
   {id:'1',password:'1',email:'a@gmail.com',tc:'1',dId:1,name:'Erkan',surname:'Çalışkan',docs:[]},
   {id:'2',password:'2',email:'a@gmail.com',tc:'1',dId:2,name:'Erkan',surname:'Çalışkan',docs:[]},
   {id:'3',password:'3',email:'a@gmail.com',tc:'1',dId:2,name:'Erkan',surname:'Çalışkan',docs:[]}
    ],
 
 docs: [{ type : '',
    piece : '',
    insti : '',
    desc : '',
    selected : '',
    date : ''}],
 
 a: function () {
  this.docs.push({ type : 'test',
    piece : 'test',
    insti : 'test',
    desc : 'test',
    selected : this.docs[0].selected,
    date : this.docs[0].selected});
  
 }
}
 

obj.a();
 
  
console.log(obj.docs);  

记住,当引用 this.docs 时,它返回的是一个数组,因此您需要确保在其中放入索引以引用该数组中的特定对象(就像我在最后几个值中所做的那样)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接