如果某个项目已经在数组中,我想将其删除,否则我想将其添加到数组中。我应该怎么做?我附上了不完整的代码:
import { SELECTED_ITEM } from '../actions/type'
const INITIAL_STATE = []
export default(state = INITIAL_STATE ,action) => {
switch(action.type) {
case SELECTED_ITEM:
state.map(function(value) {
if(value === action.payload) {
?????
}
})
return [...state,action.payload]
default : return state;
}
}
我是否必须遍历所有值才能找到项目?以及如何返回已删除或已添加项目的新状态?
答案 0 :(得分:1)
您可以进行Array#includes
检查,然后根据需要进行过滤(假定原始值):
if(state.includes(value)) {
return state.filter(value => value !== action.payload);
}
return [...state, action.payload];
答案 1 :(得分:0)
我使用lodash进行管理,这最适合数组迭代。对于使用普通循环或在某些情况下,我会发现一些问题。因此它不可靠。
var e = _.findIndex(state.itemList, function(o) { return o.UserID== action.payload.UserID; });
if(e!==-1){
state.itemList.splice(e, 1)
return { ...state, itemList: [...state.itemList] }
}