javascript - 反应将数组转换为对象的对象
问题描述
在我的反应项目中,我得到了以下结构(带有键的对象):
const listItems = {
1:{
id: 1,
depth: 0,
children: [2,5]
},
2:{
id: 2,
depth: 1,
children: [3,4],
parentIndex: 1,
disabled: false
},
3:{
id: 3,
depth: 2,
parentIndex: 2,
disabled: false
},
}
这样做之后:
let listItemsModified = Object.keys(listItems).map((i, listItem, inputArray) => {
listItems[i]._styles = {
root: {overflow: 'hidden'}
};
return listItems[i];
});
我得到的只是对象数组:
[
{
id: 1,
depth: 0,
children: [2,5],
_styles: 'some styles here'
},{
id: 2,
depth: 1,
children: [3,4],
parentIndex: 1,
_styles: 'some styles here',
disabled: false
},
{
id: 3,
depth: 2,
parentIndex: 2,
_styles: 'some styles here',
disabled: false
}
]
但我需要一个对象,就像我最初一样,像这样:
{
1:{
id: 1,
depth: 0,
_styles: 'some styles here',
children: [2,5]
},
2:{
id: 2,
depth: 1,
children: [3,4],
parentIndex: 1,
_styles: 'some styles here',
disabled: false
},
3:{
id: 3,
depth: 2,
parentIndex: 2,
_styles: 'some styles here',
disabled: false
},
}
我试过这样的事情:
Object.keys(listitemsModified).reduce((array, key) => {
return {key: listitemsModified[key]}
}, {})
但我只得到 1 个对象而不是对象的对象。欢迎任何如何解决此问题的想法。谢谢
解决方案
像这样的东西应该适用于原件listItems
:
const listItems = {
1:{
id: 1,
depth: 0,
children: [2,5]
},
2:{
id: 2,
depth: 1,
children: [3,4],
parentIndex: 1,
disabled: false
},
3:{
id: 3,
depth: 2,
parentIndex: 2,
disabled: false
},
}
const result = Object.keys(listItems).reduce((acc, key) => {
acc[key] = {
...listItems[key],
_styles: {
root: {overflow: 'hidden'}
}
};
return acc;
}, {});
console.log(result);
推荐阅读
- c# - 使用 Autofixture 生成副本
- react-native - React Native Web,数据属性不起作用?
- python - 如何导入兄弟姐妹以便 python 可以同时运行文件和下行脚本?
- asp.net - 如何在剃须刀页面中重定向到自定义 404 页面
- php - 使用增量添加到现有总数
- slurm - Slurm:将作业数组调度到最少的节点数
- c++ - 检查包含库 C++ 的大小
- ionic-framework - 在离子 4 中对 MSAdal 进行身份验证后,正确的重定向 URI 是什么?
- node.js - 如何使用 multer gridfs 存储删除文件?
- java - 如何使用appium在具有recyclerview的android本机应用程序中滚动屏幕