Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的删除操作工作不正常?_Javascript_Object - Fatal编程技术网

Javascript 我的删除操作工作不正常?

Javascript 我的删除操作工作不正常?,javascript,object,Javascript,Object,这是我的删除代码,它只在第一次调用时有效 const byId = (state = {}, action) => { switch (action.type) { case 'REMOVE_TODO': return Object.keys(state).filter( key => { return state[key].id !== action.id }).reduce((acc,key) => Object.

这是我的删除代码,它只在第一次调用时有效

const byId = (state = {}, action) => { 
  switch (action.type) {
    case 'REMOVE_TODO':
      return  Object.keys(state).filter( key => { 
        return state[key].id !== action.id 
      }).reduce((acc,key) => Object.defineProperty(acc, key, {
        value: state[key], }),{});          
          default:
      return state;
  }
};
我的状态对象是这样的:

{"abcd1": {id: "abcd1", text: "hello world"}, "efgh2": {id: "efgh2", text: "hello there"}

所以发生的事情是,我可以在第一次调用时删除,然后当我再次尝试调用时,我的对象变成空的?或者只有{}。不知道为什么?

我更喜欢将我的状态对象塑造为:

[{id: "abcd1", text: "hello world"},{id: "efgh2", text: "hello there"}]
因为重复对象键和todo id(如果它们相同)是多余的。 然后,在减速器中,您可以有如下内容:

const byId = (state = [], action) => { 
  switch (action.type) {
    case 'REMOVE_TODO':
      return state.filter((todo) => todo.id != action.id)
    default:   
      return state;
};