按类别划分的总数据属性值
我正在尝试使用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方法来实现你的目标。
干杯,