问题描述
我目前正在从Firebase Firestore集合中以这种格式获取所有数据:
@media only screen and (min-width: 1024px) {
.menu-toggle + nav {
display: none;
}
}
为了能够通过Redux更好地访问此数据,我需要将其转换为以下格式:
[
{
id: GEU8E3UJSSB33749K,advancedPayments: 20,...
},{
id: FETB73UJSSBREF59V,},...
]
我该怎么做?
解决方法
使用Array#reduce累积数据。对您的对象进行迭代会在累积的对象中创建id的属性,并将整个对象添加到其中。在此之后删除ID。
注意:我添加了整个对象并删除了id属性,而是遍历了所有属性,并检查键是否与id不相等,并仅将它们添加到新对象中,因为这样做应该更快(尤其是如果您有很多miore属性)。
let arr = [
{
id: 'GEU8E3UJSSB33749K',advancedPayments: 20,},{
id: 'FETB73UJSSBREF59V',}
];
let res = arr.reduce((acc,cur) => {
acc[cur.id] = cur;
delete acc[cur.id].id;
return acc;
},{});
console.log(res);
,
尝试一下
let res = [
{
id: 'GEU8E3UJSSB33749K',{
id: 'FETB73UJSSBREF59V',}
].reduce((accumulator,obj) => {
const {advancedPayments} = obj;
return {
...accumulator,[obj.id]: { advancedPayments }
};
},{});
console.log(res);