[英]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.