将新类实例中的数据存储在数组中
Store data from new class instance in an array
我想创建4个新用户,
let JonSnow = new User({ id: 1, name: 'Jon Snow', status: Status.user });
let AryaStark = new User({ id: 2, name: 'Arya Star', status: Status.user });
let SansaStark = new User({ id: 3, name: 'Sansa Stark', status: Status.user });
let JoffreyBaretheon = new User({ id: 4, name: 'Joffrey Baretheon', status: Status.user });
在我的User类中,我有一个allUser
函数,
allUsers() {
let users: IUser[] = [];
let user: IUser = {
id: this.id,
name: this.name,
status: this.status
}
users.push(user);
users.forEach((user) => console.log(user));
return users;
}
如果我这样调用函数,
JonSnow.allUsers();
AryaStark.allUsers();
SansaStark.allUsers();
JoffreyBaretheon.allUsers();
正如预期的那样,它调用allUsers
函数4次。
如何将所有4个新用户存储到一个阵列中?所以我只需要调用一次函数就可以显示所有用户?
您可以有一个模块/命名空间变量(不要导出它,这样它就无法从外部访问),如下所示:
let users: IUser[] = [
new User({ id: 1, name: 'Jon Snow', status: Status.user }),
new User({ id: 2, name: 'Arya Star', status: Status.user }),
new User({ id: 3, name: 'Sansa Stark', status: Status.user }),
new User({ id: 4, name: 'Joffrey Baretheon', status: Status.user })
]
然后你有一个简单的方法:
allUsers(): IUser[] {
return users.slice(0);
}
请注意,我克隆了users
数组,这样,获得对它的引用的人就无法更改这个内部数组,但这不是必须的。
但并没有真正需要在所有类中都有这个方法,您可以使它成为静态的
但是您也可以使这个数组成为User
类的静态成员,因此:
class User {
private static users: IUser[] = [];
constructor() {
User.users.push(this);
}
static allUsers(): IUser[] {
return User.users.slice(0);
}
}
您可以获取所有用户:User.allUsers()
。
您似乎只是在尝试将一堆User
实例转换为一个IUser
对象数组。
我要做的是提供一个返回IUser
对象的User
类方法:
public toIUser():IUser {
return {
id: this.id,
name: this.name,
status: this.status
}
}
然后简单地使用以下函数映射您的实例:
let allUsers = [JonSnow, AryaStark, SansaStark, JoffreyBaretheon].map(user => user.toIUser());
console.log("all users:", allUsers);
这里是游乐场的例子。
附言:我会避免使用static
变量作为您的解决方案。
将静态User
变量声明为数组:
User.users = []
在User
构造函数中,将当前对象添加到数组:
User.users.push(this)
然后在allUsers
中返回数组:
allUsers() {
return User.users
}
相关文章:
- Meteor会话变量未存储数组
- 在Javascript的Textbox中存储数组中的值
- 如何保留输入复选框值的存储数组
- 如何在 localStorage 中存储数组
- 如何在打包的 chrome 应用中本地存储数组
- 如何在 html5 的本地存储对象中存储数组
- 需要循环访问 json 数据的本地存储数组中存储的 json 对象
- 在 Javascript 中创建存储数组,并在每次单击时推送元素 ID
- 根据选中的复选框存储数组元素
- 如何存储数组javascript
- 存储数组在Chrome扩展
- 什么是最有效的方式来存储数组从PHP到JS/jQuery,这样它是可重用的
- Javascript存储数组值
- 存储数组到Cookie Jquery
- Ruby在遍历函数时尝试存储数组元素
- 如何从mongodb的形式存储数组
- 如何在html中打印存储在本地存储数组中的值
- 使用Firebase存储数组
- 获取字符串格式的MySQL存储数组并转换为JSON对象的数组
- 在html attr中存储数组值的最佳实践