如何使用户在必填字段中添加对象?

时间:2019-01-18 13:08:53

标签: javascript

我有一个包含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,是否有可能在对象的开始而不是在它的末尾推送它?

3 个答案:

答案 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对象来使它成为单一对象。