2017-10-19 50 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} 
相关问题