包含对象的数组到包含所述对象的单个对象

问题描述

我目前正在从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);