如何基于对象属性创建新对象

时间:2015-09-18 11:32:21

标签: javascript

我正试图想出一种方法来创建一个总结统计数据集的新对象。

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

enter image description here

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

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

并访问它,如object.blocks [0],object.delivered [0],object.blocks 1,object.delivered 1等等

应该自动创建'blocks','deliver'。

这甚至可能吗?

2 个答案:

答案 0 :(得分:0)

我无法想到一个内置函数将一个对象数组转换成一个更好的术语“数组对象”。但是执行此操作的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;
}

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

答案 1 :(得分:0)

只需循环遍历数组并选择值,然后将它们存储在某处。

例如:

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]);
        }
    });
});