繁体   English   中英

如果 id 匹配或添加到末尾,则将数组与嵌套对象合并

[英]Merge array with nested objects if id matches or add to the end

我正在尝试分配克隆/合并对象,该对象具有 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对象,我想将其添加到列表中。

当前的方法总是将其添加到最后,这当然不是我想要的。

谢谢。

不要因为在一次操作中创建新状态而感到有压力。 这将是我的实现。 我会使用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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM