我有一个包含50个用户的数组。所以,然后我有一个方法add :(应该接受用户的对象(必填字段firstName),将其添加到用户数组中,(新用户的用户ID应该以编程方式生成并且是唯一的))
const users = [{
"id": 1,
"first_name": "Abner",
"last_name": "Glaisner",
"gender": "Male",
"language": "Tswana"
}, {
//...
}]
class UserList {
constructor(users) {
this.users = users;
}
add(newUser) {
if (typeof newUser === 'object' && typeof newUser !== null) {
users.push(newUser);
newUser.id = users.length;
console.log(`Hello everyone i am ${newUser.first_name}`);
} else {
console.log('Please add object where first_name field is required!');
}
}
}
所以我需要的是用户写东西的时候
UserList.add({
first_name: 'Jack',
last_name: 'Nollan',
//...
})
让他填写first_name
。
有可能吗?
而且我也使用newUser.id = user.length来生成用户的ID,是否有可能在对象的开始而不是在它的末尾推送它?
答案 0 :(得分:1)
回答第二个问题;您可以通过使用数组传播运算符来实现它,您可以执行以下操作:
users = [newUser, ...users];
请注意,每次您向数组添加内容时,它都会覆盖数组。
另一种方法是在使用它的地方Array.reverse
。
答案 1 :(得分:1)
您还应根据需要检查新用户的名字和姓氏。 即:&& newUser.first_name && newUser.last_name。
您可以简单地
if(newUser && typeOf newUser === "object" && newUser.first_name && newUser.last_name){
//add to []
}else {
//show message code
}
答案 2 :(得分:0)
您已经有一个if块来检查它是否是有效用户,为什么不使用它来检查是否设置了first_name
?
对于在数组的开头添加对象,可以使用expand运算符。 ([newElement, ...array]
)
class UserList {
constructor(users) {
this.users = users;
}
add(newUser) {
if (typeof newUser === 'object' && newUser.first_name) {
users = [{id: users.length, ...newUser}, ...users];
console.log(`Hello everyone i am ${newUser.first_name}`);
} else {
console.log('Please add object where first_name field is required!');
}
}
}
编辑:
正如Linschlager很快指出的那样,您甚至可以通过从id: users.length
创建一个新对象并扩展newUser
对象来使它成为单一对象。