How to make user add object with required field?

258 views Asked by At

I have an array with 50 users. So then i've a method add:(should accept object of user (field firstName is required), add it to array of users, (user id for new user should be generated programmatically and be unique))

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!');
    }
  }
}

So what i need is when user writes

UserList.add({
  first_name: 'Jack',
  last_name: 'Nollan',
  //...
})

Make him to fill first_name. Is it possible to do ? And also i use newUser.id = user.length to generate user's id, is it possible to push it at the begining of object not to the end of it ?

3

There are 3 answers

3
Linschlager On

Answering your second question; You could achieve it by using the array spread operator you could do something like this:

users = [newUser, ...users];

Note that this overwrites the array every time you add something to it. Another approach would be to Array.reverse it where you use it.

0
Bikash Shrestha On

You should also check for new user's first and last name as they are required. i.e: && newUser.first_name && newUser.last_name.

You can simply

if(newUser && typeOf newUser === "object" && newUser.first_name && newUser.last_name){
    //add to []
}else {
    //show message code
}
3
Ahmed Bajra On

You already have an if block to check if it's a valid user, why not use it to check if first_name is set?

As for adding an object at the beginning of an array, you could use the expand operator for that. ([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!');
    }
  }
}

EDIT:

As Linschlager was quick to point out, you can even make it a one-liner by creating a new object from id: users.length and expanding the newUser object.