在JavaScript中将对象数组转换为数组对象

假设我们有一个这样的对象数组-

const nights = [

   { "2016-06-25": 32, "2016-06-26": 151, "2016-06-27": null },

   { "2016-06-24": null, "2016-06-25": null, "2016-06-26": null },

   { "2016-06-26": 11, "2016-06-27": 31, "2016-06-28": 31 },

];

我们需要编写一个JavaScript函数,该函数接受一个这样的数组并根据对象键构造一个数组对象。

因此,上述数组的输出应类似于-

const output = {

"2016-06-24": [null],

"2016-06-25": [32, null],

"2016-06-26": [151, null, 11],

"2016-06-27": [null, 31],

"2016-06-28": [31]

};

示例

此代码将是:

const nights = [

   { "2016-06-25": 32, "2016-06-26": 151, "2016-06-27": null },

   { "2016-06-24": null, "2016-06-25": null, "2016-06-26": null },

   { "2016-06-26": 11, "2016-06-27": 31, "2016-06-28": 31 },

];

const arrayToObject = (arr = []) => {

   const res = {};

   for(let i = 0; i < arr.length; i++){

      const keys = Object.keys(arr[i]);

      for(let j = 0; j < keys.length; j++){

         if(res.hasOwnProperty(keys[j])){

            res[keys[j]].push(arr[i][keys[j]]);

         }

         else{

            res[keys[j]] = [arr[i][keys[j]]];

         }

      }

   };

   return res;

};

console.log(arrayToObject(nights));

输出结果

控制台中的输出将是-

{

   '2016-06-25': [ 32, null ],

   '2016-06-26': [ 151, null, 11 ],

   '2016-06-27': [ null, 31 ],

   '2016-06-24': [ null ],

   '2016-06-28': [ 31 ]

}

以上是 在JavaScript中将对象数组转换为数组对象 的全部内容, 来源链接: utcz.com/z/338028.html

回到顶部