繁体   English   中英

如何根据对象属性创建新对象

[英]How to create new object based on object properties

我试图找出一种方法来创建一个汇总统计数据集合的新对象。

这个新对象的信息来自以下形式的数组

在此处输入图片说明

现在,我需要将这些数据存储在一个新对象中,例如:

{
   blocks: [41, 22, 3, 4],
   delivered: [23, 11, 2, 1]
}

并像访问它一样 object.blocks[0], object.delivered[0], object.blocks 1 , object.delivered 1 ... 等等

其中“块”,“已交付”应自动创建。

这甚至可能吗?

在我的头顶上,我想不出一个内置函数来将对象数组转换为一个更好的术语“数组对象”。 但是执行此操作的 javascript 代码并不是很困难:

function arrayOfObjToObjOfArrays(arr) {
  toRet = { blocks: [], delivered: [] };
  for(var i = 0; i < arr.length; ++i) {
    var obj = arr[i];
    for(var k in obj) {
      if(k === 'blocks' || k === 'delivered') { 
        toRet[k].push(obj[k]); 
      }
    }
  }
  return toRet;
}

这尚未经过测试,但应该足以让您入门。

这只是遍历数组并挑选出值,然后将它们存储在某处的问题。

例如:

var result = {};
arr.forEach(function (obj) {
    Object.keys(obj).forEach(function (key) {
        if (key === "blocks" || key === "delivered") {
            if ( ! Array.isArray(result[key])) {
                result[key] = [];
            }
            result[key].push(obj[key]);
        }
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM