Как правильно удалить объект из массива JS

116
13 ноября 2021, 04:30

У меня есть Reducer, в который диспатчится action с добавлением объекта,

export const addFavoriteItem = (payload) => {
return {
    type: ADD_FAVORITE_ITEM,
    payload: payload
}

}

надо сделать добавление в избранные (условного поста) и потом отрисовать в вкладке избранное, сам объект приходит в таком формате

let data = {
        title: props.title,
        worksCount: props.worksCount,
        partnersCount: props.partnersCount,
        rate: props.rate,
        image: props.image,
        id: props.id
    }

после его добавления, у избранных постов, должна быть возможность удалить их оттуда

export const deleteFavoriteItem = (payload) => ({ type: DELETE_FAVOROTE_ITEM, payload })

Я написал отдельную логику, которую вынес за пределы редьюсера, но данный подход не работает, поддскажите как эффективно удалить пост из массива?

let deleteElem = (arr, payload) => {
let items = arr
arr.map(el => {
    if (el.id != payload.id) {
        items = [
            ...items,
            payload
        ]
    }
})
return items

}

const favoritesReducer = (state = initialState, action) => {
switch (action.type) {
    case DELETE_FAVOROTE_ITEM:
        return {
            ...state,
            favoriteItem: deleteElem(state.favoriteItems, action.payload)
        }
    default:
        return state
}

}

Answer 1

Если не работает дай знать, потому что код ниже написал "вслепую"

const deleteElem = (arr, payload) => {
  const newArray = arr.filter(item => {
    if (item.id === payload.id) return false;
    return item;
  });
  return newArray;
}
READ ALSO
Angular: (click) не работает внутри appendTo()

Angular: (click) не работает внутри appendTo()

У меня есть цикл по добавлению кнопок, при нажатии на кнопку, вызывается функция doActionRibb('color') которая меняет цвет элементовВсе прекрасно работало...

230
Индексаторы в JS

Индексаторы в JS

в C# можно определить индексатор для какого то объекта:

109
Как загрузить все элементы div'а?

Как загрузить все элементы div'а?

Я Пишу небольшое расширение для хрома, работающее с сайтом https://csmoney/ru/ Мне необходимо загрузить все элементы инвентаря пользователя, scroll...

135