按类别划分的总数据属性值

我正在尝试使用jQuery从列表中按数据属性名称查找总金额组。 类似于分组类别并找到总和。

例如,我想创建这样的东西:

group1 = 3 group2 = 5 group3 = 3 

从这个清单:

       

我想知道是否有一些jQuery函数帮助实现它,比如groupByName()

使用纯JavaScript:

这里的例子

 function getCategoryTotal(cat) { var total = 0, elements = document.querySelectorAll('[data-category="' + cat + '"]'); Array.prototype.forEach.call(elements, function (el, i) { total += parseInt(el.dataset.amount, 10); }); return total; } console.log(getCategoryTotal('group1')); // 3 console.log(getCategoryTotal('group2')); // 5 console.log(getCategoryTotal('group3')); // 3 

我想你问过jQuery这样做的方式,我做了:

 $.fn.amountByData = function(dataAttr, amountDataAttr) { if (typeof amountDataAttr == "undefined") amountDataAttr = "amount"; var dataAmountArr = new Array(); $(this).each(function() { var dataAttrVal = $(this).data(dataAttr); if (typeof dataAmountArr[dataAttrVal] == "undefined") dataAmountArr[dataAttrVal] = parseInt($(this).data(amountDataAttr)); else dataAmountArr[dataAttrVal] += parseInt($(this).data(amountDataAttr)); }); return dataAmountArr; }; 

这是我如何实现jQuery的方式! 这提供了很大的灵活性,因为您可以根据需要选择要计算数量的数据属性,并且如果它不是命名amount ,您还可以选择精确不同数量的数据属性。

PS:我知道答案已被选中,但与@Josh Crozier相反,我知道你想要一个jQuery方法来实现你的目标。

干杯,