如何在数组中推送对象数组

时间:2018-10-19 15:21:19

标签: javascript arrays vue.js

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

// 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数组。

3 个答案:

答案 0 :(得分: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:[]}
  ]

答案 1 :(得分: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)

答案 2 :(得分: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时,它正在返回一个数组,因此您需要确保在其中放置索引,以便它可以引用该数组中的特定对象(就像我在本文中所做的那样)代码的最后两个值)。

相关问题