Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

206
Vistas
Eliminar valor de una matriz anidada en un objeto también anidado en una matriz

Tengo un problema con mi código. Actualmente tengo algunos datos como el siguiente;

 users: [ { name: 'bolu', features: ['Tall'], }, { name: 'cam', features: ['Bearded', 'Short'], }, ], };

Lo que estoy tratando de hacer es eliminar/eliminar una sola característica, por ejemplo, si paso 'breve' en mi acción redux. Me gustaría que (el texto 'Corto') se elimine de la matriz de funciones. Actualmente tengo mi acción redux configurada de esta manera:

 export interface UsersDataState { name: string, features: Array<string>, } export interface UsersState { users: UsersDataState[]; } const initialState: UsersState = { users: [], }; export const usersSlice = createSlice({ name: 'users', initialState, reducers: { removeUser: (state, action: PayloadAction<string>) => { const removedUsers = state.users.filter((user) => user.features.indexOf(action.payload)); state.users = removedUsers; }, }, });

Así que aquí estoy pasando el valor en ( action.payload es el valor que se pasa). Cuando se envía esta acción, quiero eliminar solo la palabra que se pasa de la matriz de funciones. Espero que esto sea más claro ahora.

Esto no funciona por alguna razón y no puedo entender por qué. Cualquier ayuda sería apreciada por favor, gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

  1. Su código no coincide con la estructura de su estado. Reemplace traits con users y values con features .

  2. Parece que eso es parte de un reductor, no una acción (que es un objeto, no una función).

  3. Debería devolver un nuevo estado del reductor.

  4. Dada su actualización, la función debería llamarse removeFeature .

Entonces, he corregido algunos fragmentos de su código según lo que recuerdo de Redux. Nota: ejemplo artificial.

 // State const state={users:[{name:"joe",features:["Mean","Short"]},{name:"bolu",features:["Tall"]},{name:"cam",features:["Bearded","Short"]}]}; // The reducer accepts a state, and an action function reducer(state, action) { // We destructure the type, and payload, from the action object const { type, payload } = action; // Depending on the type... switch (type) { case 'removeFeature': { // `map` over the users (we return a new state array) return state.users.map(user => { // `filter` out the feature elements // that match the payload const updatedFeatures = user.features.filter(feature => { return feature !== payload; }); // Return a new updated object return { ...user, features: updatedFeatures }; }); } default: return state; } } const updatedState = reducer(state, { type: 'removeFeature', payload: 'Short' }); console.log(updatedState);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda