对关联数组键值求和并按键分组
Sum associative array key values and group it by key
我有如下表格:
<table>
<thead>
<th>PRODUCT</th>
<th>QUANTITY</th>
<th>AREA</th>
<th>PRICE</th>
<th>TOTAL</th>
<tr>
<td id="name">SWEETS</td>
<td id="qty">10</td>
<td id="area">250</td>
<td id="price">16.50</td>
<td id="total">160.50</td>
</tr>
<tr>
<td id="name"">DRY FOODS</td>
<td id="qty">5</td>
<td id="area">100</td>
<td id="price">10.25</td>
<td id="total">51.25</td>
</tr>
<tr>
<td id="name">FRESH</td>
<td id="qty">20</td>
<td id="area">250</td>
<td id="price">5</td>
<td id="total">100</td>
</tr>
<tr>
<td id="name">MEAT</td>
<td id="qty">10</td>
<td id="area">250</td>
<td id="price">15</td>
<td id="total">150</td>
</tr>
<tr>
<td id="name">FROZEN</td>
<td id="qty">20</td>
<td id="area">300</td>
<td id="price">10</td>
<td id="total">200</td>
</tr>
</table>
所以,我想制作一个像{area:total}
这样的数组,然后根据面积和总面积值对数组值进行分组。
喜欢:
面积 250 : 410.5
面积 100 : 51.25
面积 300 : 200
尝试如下,我得到了它数组,但我不知道如何对区域进行分组(我使用了setInterval功能,因为员工可以删除或更改区域值)
setInterval(function() {
var $row = $(this).closest("tr");
var sasData = [];
$row.each(function(i) {
var sasValue = parseFloat($row.find("#area").val());
var totValue = parseFloat($row.find("#total").val());
sasData.push({sas:sasValue, tot:totValue});
console.log(sasData);
});
function compressedArray(original) {
var compressed = [];
};
}, 1500)
你能告诉我如何处理这个问题吗?
这个JSFiddle应该可以解决你的问题。我还修复了您丢失的标题,您在干粮 td 中的双引号,并将 id 更改为类:
http://jsfiddle.net/Q9nrf/1/
var areas = {};
$("tr").each(function() {
var area = $(this).find("td.area").text();
if (area != "") {
var total = parseFloat($(this).find("td.total").text());
if (!areas.hasOwnProperty(area)) {
areas[area] = 0;
}
areas[area] += total;
}
});
console.log(areas);
您需要
将 id 值更改为其他属性,例如 class。
遍历行(使用 tbody 元素跳过标题)并从具有所需类的元素中收集值。您将需要使用数组来存储它们,因为您无法对对象的属性进行排序,并且每个属性必须具有唯一的名称。
id 应该是唯一的。 所以<td id="area">250</td>
改为<td class="area">250</td>
然后只需致电:
o = {};
$("td.area").each(function(){
key = o[$(this).text()];
if (!key) key = 0;
key += parseFloat( $(this).closest("tr").find(".total").text());
});
然后你有 on 对象包含键值 [键=区号,值=总计]
相关文章:
- 如何在php中的jquery中对循环内的选择框值求和
- 如何在jquery中使用实时计算求和值
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 尝试求和时,在我的表的页脚中返回$NaN
- Rails——处理多态关联上的Ajax destroy调用
- 我想将链接关联到动态创建的p元素上的相应文章
- ExtJS 4:编写带有模型关联的嵌套XML
- 具有关联数组数据集的D3.js表
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- JavaScript JSON关联对象键和值都作为日期时间戳
- 选择框中带有关联的ng模型,选项中带有ng重复
- 后关联数组使用jquery ajax
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- 获取关联单元格onchange的值
- 在键值对中对求和值进行下划线
- 在不同的屏幕和分辨率上跟踪鼠标并将其关联起来
- 如何按对象数组进行分组和求和
- 如何创建php函数或任何脚本/jquery Javascript,使我能够获取与复选框关联的值并添加它们
- 对关联数组键值求和并按键分组