Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在redux中将列表项作为键添加到对象?_Javascript_Reactjs_Redux - Fatal编程技术网

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
,这就是区别。更新了答案,但你肯定混淆了数组和对象之间的概念