Reactjs 将嵌套对象转换为单个值数组
我有一些json数据,如下所示:Reactjs 将嵌套对象转换为单个值数组,reactjs,ecmascript-6,lodash,Reactjs,Ecmascript 6,Lodash,我有一些json数据,如下所示: { 'harry-test-com': { 'quoteID234324': {'day': 'tuesday', 'cost':'1000'}}, 'sam-imaginarydomain-com': { 'quoteID13211': {'day': 'wednesday', 'cost': '500'}, 'quoteID534534': {'day': 'monday', 'cost': '300'} } }; 因此,基本上我们的报价是由用户安排的
{
'harry-test-com': { 'quoteID234324': {'day': 'tuesday', 'cost':'1000'}},
'sam-imaginarydomain-com': {
'quoteID13211': {'day': 'wednesday', 'cost': '500'},
'quoteID534534': {'day': 'monday', 'cost': '300'}
}
};
因此,基本上我们的报价是由用户安排的,以便于过滤。但是,我想在一个页面上显示列表中的所有引号。所以我想遍历每个用户,获取他们的引号,并将它们添加到按键排序的对象中,如下所示:
'quoteID234324': {'day': 'tuesday', 'cost':'1000'},
'quoteID13211': {'day': 'wednesday', 'cost': '500'},
'quoteID534534': {'day': 'monday', 'cost': '300'}
我认为lodash无疑会对这一点有用,但我只是不知道从哪里开始??任何帮助都将不胜感激!干杯您可以使用
object.keys()
和object.assign()
将对象缩小为新对象:
const obj={
“哈利测试com”:{
“quoteID234324”:{
“日”:“星期二”,
“成本”:“1000”
}
},
“sam imaginarydomain com”:{
“quoteID13211”:{
“日”:“周三”,
‘成本’:‘500’
},
“quoteID534534”:{
“日”:“星期一”,
‘成本’:‘300’
}
}
};
const result=Object.keys(obj).reduce((天,用户)=>Object.assign(天,obj[user]),{});
控制台日志(结果)代码>太棒了这正是我需要的谢谢你!我选择了第二个,因为它更简洁,因为我们可能会在每个对象中添加相当多的键。然而,eslint对我大喊大叫,要我使用spread,所以我研究了一下,结果是:`const result=Object.assign(…Object.values(obj))`更新了答案以创建一个新对象,因此它不会改变原始数据(“harry-test-com”对象)。太棒了!我只是想弄清楚为什么我的组件WillReceiveProps没有启动,我想这一定是因为状态发生了变化!救生员…嗯,它还没开火。我的redux reducer的结构如下:const quotes=action.payload;常量quotesList=Object.assign({},…Object.values(引号));返回{…state,quotesList};知道为什么这不会导致组件WillReceiverProps起火吗?