2017-10-19 72 views
-1

我試圖分配克隆/合併對象,其具有陣列,其中ID匹配或添加結束:合併數組嵌套對象如果ID匹配或添加到末尾

newState = Object.assign({}, state, { 
    data: { 
     newest: { 
     result: action.payload.result, 
     list: action.payload.items, 
     request: action.payload.items 
     }, 
     itemList: [ 
     ...state.data.itemList, 
     { 
      id: action.payload.id, 
      list: action.payload.items, 
      request: action.payload.items 
     } 
     ] 
    } 
    }); 

在這種情況下...state.data.itemList是一個包含對象的數組,其中我想要查找帶有ID的現有對象,併合並列表+請求嵌套對象。但是,如果沒有與該對象ID我想將其添加到列表中。

當前的方法總是把它添加到最後,這當然不是我想要的。

謝謝。

回答

0

不要在一次手術中感受到使新狀態受到壓力。這將是我的實施。我會檢查我的陣列使用Array#some當前的ID。這裏也有一些有趣的ES6技巧。

const newState = {...state} 
const {result, items, id, items} = action.payload 
const data = {newest: {result, list: items, request: items}} 
const hasId = newState.data.itemList.some(item => item.id === id) 
if (!hasId) { 
    newState.data.itemList.push({id, list: items, request: items}) 
} 
return {...newState, data}