我正在尝试分配克隆/合并对象,该对象具有id匹配或添加到结尾的数组:
1 file(s) copied - abc.jpg.
1 file(s) copied - xyz.jpg.
1 file(s) copied - 123.jpg.
在这种情况下, 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
的对象,我想将其添加到列表中。
当前的方法总是将它添加到最后,这当然不是我想要的。
感谢。
答案 0 :(得分: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}