我想通过另一个数组中的 id 过滤掉一个对象数组

I want to filter out an array of objects by ids in another array

我有一个对象数组,即 queueDetails[{},{}]。我有另一个来自响应的 id 数组 "payload":[{"id":"1"},{"id":"2"}]。 我想 filterqueueDetails 中提取有效载荷中的 ID,为此我有以下代码:

action.payload.map(payload => {
       state.queueDetails.filter(queue => queue._id !== payload.id)              
})

return {
           ...state,
           queueDetails: ???
        }

我该如何从这里开始。

我认为,可以安全地猜测,您正在构建 Redux store reducer 的一部分,如果是这样的话,相应的 case 过滤操作部分可能是这样的:

case FILTER_QUEUE_DETAILS : {
   const { queueDetails } = state,
         { payload } = action,
         submittedIds = payload.map(({id}) => id)
   return {...state, queueDetails: queueDetails.filter(({id}) => !submittedIds.includes(id))}
}

您可以在下面找到快速演示:

const { createStore } = Redux
      
const defaultState = {queueDetails:[{id:1,data:'somedata'},{id:2,data:'moredata'},{id:3,data:'somemore'}]},
      FILTER_QUEUE_DETAILS = 'FILTER_QUEUE_DETAILS',
      appReducer = (state=defaultState, action) => {
        switch(action.type) {
          case FILTER_QUEUE_DETAILS : {
             const { queueDetails } = state,
                   { payload } = action,
                   submittedIds = payload.map(({id}) => id)
             return {...state, queueDetails: queueDetails.filter(({id}) => !submittedIds.includes(id))}
          }
          default: return state
        }
      },
      store = createStore(appReducer)

//initial state
console.log(`// initial state:\n`, store.getState())      

//dispatch action to filter out id's 1, 3
store.dispatch({
  type: FILTER_QUEUE_DETAILS,
  payload: [{id:1},{id:3}]
})

//log resulting state
console.log(`// state upon id's 1 and 3 filtered out:\n`,store.getState())
.as-console-wrapper {min-height:100%}
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/4.0.5/redux.min.js"></script>