Hola, estoy tratando de eliminar un usuario de una matriz en react javascript, el texto se le da a la función que debe eliminarse y se ejecuta a través de la función a continuación, this.state.users contiene objetos con propiedades como:

0: {user_id: "001", first_name: "john", last_name: "doe", email: "john@doe.com"}

1: {user_id: "002", first_name: "mike", last_name: "ty", email: "mike@ty.com"}

Me pregunto si esto se puede optimizar aún más para grandes conjuntos de datos. o ya está optimizado gracias!

removeUser(text){
  var updatedUsers = this.state.users;
  var i = 0;
  for (i = 0; i< updatedUsers.length;i++)
  {
    if(updatedUsers[i].user_id == text)
      break;
    }
    updatedUsers.splice(i,1);
    this.setState({users: updatedUsers});
  }
}
0
Tommy 14 nov. 2017 a las 16:59

2 respuestas

La mejor respuesta

Podrías usar la matriz filter:

removeUser (text) {
  this.setState({
    users: this.state.users.filter((u) => u.user_id !== text)
  })
}
3
lilezek 14 nov. 2017 a las 14:07

Puede usar uno de enfoque de redux.

removeUser(text) {
  const { users } = this.state
  const index = users.findIndex(user => user.user_id === text)

  this.setState({
    users: [
      ...users.slice(0, index), // every user before index
      ...users.slice(index + 1), // every user after index
    ]
  })
}
1
mersocarlin 14 nov. 2017 a las 14:12