【发布时间】:2016-12-01 17:37:39
【问题描述】:
我在操作数组方面的知识真的很差,如果我能得到任何帮助,我正在徘徊。我有一个array("dataResult") 。它有地区、水果和用户信息。我想根据地区对这些信息进行分组,并计算每个组的唯一用户数。
dataResult = [{ region: "Africa", fruit: "Orange", user: "Gary" },
{ region: "Africa", fruit: "Apple", user: "Steve" },
{ region: "Europe", fruit: "Orange", user: "John" },
{ region: "Europe", fruit: "Apple", user: "bob" },
{ region: "Asia", fruit: "Orange", user: "Ian" },
{ region: "Asia", fruit: "Apple", user: "Angelo" },
{ region: "Africa", fruit: "Orange", user: "Gary" }]`
我希望我的最终数组看起来像下面的数组,以反映分组结果和每个组的唯一用户数
NewResult = [{ region: "Africa", count: 2 }, { region: "Europe", count: 2},{ region: "Asia", count: 2}],
关于如何实现这一点的任何想法?我已经看到了一些关于如何对结果进行分组的好信息,但我正在努力获取每个组的唯一用户数。
分组代码
var categoryNames = groupBy(dataResults, '2');
console.log(categoryNames);
function groupBy(items,propertyName)
{
var result = [];
$.each(items, function(index, item) {
if ($.inArray(item[propertyName], result)==-1) {
result.push(item[propertyName]);
}
});
return result;
}
【问题讨论】:
-
你的数据数组无效。
-
我建议你看看 MDN 的数组页面:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 它会帮助你更好地理解数组(以及它们的结构)。但是您可能还想查看对象:w3schools.com/js/js_objects.asp 在您的情况下,您可能希望原始“数组”改为对象。如果你觉得自己是个挑战,像 lodash 的 _.groupBy(): lodash.com/docs/4.17.1#groupBy 这样的方法将是一条更高级的路径(适用于数组和对象)
标签: javascript