查询 JavaScript 对象分组依据

Query JavaScript Object group by

我有一个这样的 JavaScript 对象:

[{"a":1,"b":2},{"a":1,"b":3},{"a":2,"b":4},{"a":2,"b":5}]

我想对这个对象字段进行分组 'a' 并且想要这样的东西:

[{"a":1,"values":[{"a":1,"b":2},{"a":1,"b":3}]},{"a":2,"values":[{"a":2,"b":4},{"a":2,"b":5}]}]

我有一个包含数千个元素的 JavaScript 数组。实现此目标的最有效方法是什么?

Underscore JS 提供了构建模型和 grouping/filtering 它们的好方法。

http://underscorejs.org/#groupBy

试试这个代码:

var data = [{"a":1,"b":2},{"a":1,"b":3},{"a":2,"b":4},{"a":2,"b":5}];

var res = alasql('SELECT a, ARRAY(_) AS [values] FROM ? GROUP BY a',[data]);

这里ARRAY(_)是一个特殊的聚合函数,将当前记录(_)保存到名称为values.

的数组中

你可以玩这个例子in jsFiddle