javascript - 在 javascript 中重组复杂对象数组的最有效方法?

标签 javascript arrays json object dataset

我有一大组看起来与此类似的数据:

var original = [
  { country : 'us', date : '2014-10-29', cost : 45.3 },
  { country : 'africa', date : '2014-10-29', cost : 60.5 },
  { country : 'south_america', date : '2014-10-30', cost : 10 },
  { country : 'us', date : '2014-10-30', cost : 30 }
];

我需要重新排列这些数据,使其看起来更像这样:

var newData = [
  { date : '2014-10-29', us : 45.3, africa : 60.5, south_america : 0 },
  { date : '2014-10-30', us : 30, africa : 0, south_america : 10 }
]

我是处理这样的数据集的新手,我正在努力寻找任何有效的方法来处理这个问题......我唯一能想到的是使用多个 for 循环,而且看起来很糟糕。有没有人有什么想法或建议?

最佳答案

首先想到的是这样做

var original = [
  { country : 'us', date : '2014-10-29', cost : 45.3 },
  { country : 'africa', date : '2014-10-29', cost : 60.5 },
  { country : 'south_america', date : '2014-10-30', cost : 10 },
  { country : 'us', date : '2014-10-30', cost : 30 }
];
var t = {};
var result = [];
original.forEach(function(entry) {
    var n = t[entry.date] = t[entry.date] || {};
    n.date = entry.date;
    n[entry.country] = entry.cost;
});
for(var k in t) {
    if (t.hasOwnProperty(k)) {
        result.push(t[k]);
    }
}
console.log(result);

没有临时对象可能有更好的方法,但你想要高效,我认为这是我能想到的最有效的方法

关于javascript - 在 javascript 中重组复杂对象数组的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777974/

相关文章:

javascript - Google Analytics - 跟踪 iframe 中的事件,但不跟踪页面浏览量

javascript - 范围高度不正确 - Google Apps 脚本

c# - 索引超出范围错误,如果不是

javascript - IndexedDB 的包装函数

javascript - 如何在knockout-postbox.js中预选Section以使内容可见

javascript - 如何在 URL 中不带 # 的情况下转到不同网站页面中的特定 div

C# 按字母顺序对字符串数组进行排序,注意将以大写字母开头的字符串放在前面。第一的

json - Spring Pageable 接口(interface)的 Swagger 文档

javascript - 如何将变量从 JSON 传递到原始 Javascript?

java - 从 Java 应用程序发送时未在服务器中获取正确的 json