Javascript 如何在redux中将列表项作为键添加到对象?
我正在将Javascript 如何在redux中将列表项作为键添加到对象?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在将Redux与Reactjs一起使用 根据: 返回新的状态对象,而不是改变以前的状态 我有一个对象,其当前状态为: state=[…,{id:6,详细信息:[]},…] 我有一组键(所有字符串和唯一键),如下所示: 列表:[“A”、“B”、“C”] 在javascript中,如果我这样做: for(列表的常量键){ exampleDetails[键]=空 } 我得到了我想要的输出: exampleDetails//[“A”:null,“B”:null,“C”:null] examp
Redux
与Reactjs
一起使用
根据:
返回新的状态对象,而不是改变以前的状态
我有一个对象,其当前状态为:
state=[…,{id:6,详细信息:[]},…]
我有一组键(所有字符串和唯一键),如下所示:
列表:[“A”、“B”、“C”]
在javascript
中,如果我这样做:
for(列表的常量键){
exampleDetails[键]=空
}
我得到了我想要的输出:
exampleDetails//[“A”:null,“B”:null,“C”:null]
exampleDetails[“A”]//空{
if(obj.id==action.id){
返回{
id:obj.id,
详情:[
…对象详细信息,
/*在这里做什么?列表在哪里=>action.list*/
]
}
}否则返回obj
})
违约:
返回状态
}
编辑
我不是想说我在代码中写了这样的东西:
[“A:null,”B:null,“C:null]
这是我在浏览器控制台中得到的输出:
编辑
switch(state = [], action) {
case 'MY_ACTION':
return state.map(obj =>
(obj.id === action.id ? {...obj, details: action.list.reduce((acc, element) => { acc[element] = null; return acc; }, {}) } : obj)
)
default:
return state
}
我认为你把数组和对象的概念混淆了。您试图实现的是一个以列表元素为键的对象。您的减速机将
细节更新为[“A”,“B”,“C”]
,请参见编辑我实际需要的细节现在是[{“A”:null},{“B”:null},{“C”:null}]
,这不是我想要的,请查看EDIT中的输出。我不明白您想要实现什么。。。你的编辑只是显示你想要一个对象列表,它是[{“a”:null},{“B”:null},{“C”:null}],除非你想要的是const exampleDetails=[{“a”:null},{“B”:null},{“C”:null}]
,exampleDetails[“a”]
中的{“a”:null}给了我未定义的
,而在我的编辑中,exampledetail a[]
给了我null
,这就是区别。更新了答案,但你肯定混淆了数组和对象之间的概念