Удалить значение из массива, вложенного в объект

У меня проблема с моим кодом. В настоящее время у меня есть некоторые данные, подобные приведенным ниже;

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

То, что я пытаюсь сделать, это удалить/удалить одну функцию, например, если я передам «коротко» в свое действие с сокращением. Я бы хотел, чтобы он («Краткий» текст) был удален из массива функций. В настоящее время у меня настроено действие redux следующим образом:

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;
        },
       },
   });

Итак, здесь я передаю значение (action.payload — это передаваемое значение). Когда это действие отправлено, я хочу удалить только переданное слово из массива функций. Я надеюсь, что теперь это более ясно.

Это не работает по какой-то причине, и я не могу понять, почему. Любая помощь будет оценена, пожалуйста, спасибо.

Не могли бы вы быть более конкретными? Вы хотите: 1. Удалить функцию, например. «Короткие» от всех пользователей в магазине? 2. Удалить функцию у конкретного пользователя?

kmnowak 16.03.2022 20:58

Я голосую за закрытие этого вопроса, потому что это повторение вопроса это было задано только 40 минут назад.

Andy 16.03.2022 21:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
34
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В настоящее время вы фильтруете массив users, но вы должны фильтровать вложенный массив features.

Попробуй это

const removedUsers = state.users.map(user => {
  return {...user, features: user.features.filter(feature => feature !== action.payload)};
})
Ответ принят как подходящий

Вам нужно скопировать объекты на users и отфильтровать на features.

Вот пример:

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

const payload = "Short";

const newUsers = users.map(user => ({ ...user,
  features: user.features.filter(f => f != payload)
}));

console.info(newUsers);

Другие вопросы по теме