删除js数组中的一个项目

时间:2018-05-21 03:37:46

标签: react-native

在我的本机应用程序中,我有一个这样的场景。有一个数组,当我们提供这个数组时,同一个项目可以在数组中不止一次。

[运动一,运动二,运动三,运动二,运动二]

我想删除只有一个动作 - 两个,当在reducer中执行具有动作ID的移除功能的删除功能时。但是现在,当我多次删除数组中的项目时,它会删除与id相关的所有项目。即使它在数组中重复,我怎么能只删除一个项目?这是我的代码。

  case REMOVE_MOVEMENT:
      return {
        ...state,
        selectedTrainerMovements: state.selectedTrainerMovements.filter(
          movement => {
            return movement.id !== action.movement.id;
            // return state.selectedTrainerMovements.splice(
            //   state.selectedTrainerMovements.indexOf(movement)
            // );
          },
          state.selectedTrainerMovements.indexOf(action.movement),
        )
      };
      break;

1 个答案:

答案 0 :(得分:1)

case REMOVE_MOVEMENT:
  let removed = false;

  return {
    ...state,
    selectedTrainerMovements: state.selectedTrainerMovements.filter(
      movement => {
        if (!removed && movement.id === action.movement.id) {
          removed = true;

          return false;
        }

        return true;
      }
    )
 };