【发布时间】:2014-04-14 00:53:39
【问题描述】:
我正在计算税金,这是一种非常复杂的开票方式。我无法解释整个过程,但如果您有问题,我会尽我所能回答。
我在 JS 中想出了一个对象数组:
[
{row_id: "20003859", expense_id: "429", tax_select: "tax1", tax_id: "1", tax_name: "GST 5%", tax_no: "", tax_value: "13.23"},
{row_id: "20003859", expense_id: "429", tax_select: "tax2", tax_id: "3", tax_name: "QST 9.975%", tax_no: "", tax_value: "26.38"},
{row_id: "20003840", expense_id: "409", tax_select: "tax1", tax_id: "1", tax_name: "GST 5%", tax_no: "", tax_value: "13.23"},
{row_id: "20003840", expense_id: "409", tax_select: "tax2", tax_id: "3", tax_name: "QST 9.975%", tax_no: "", tax_value: "26.38"},
{row_id: "20003870", expense_id: "419", tax_select: "tax1", tax_id: "2", tax_name: "HST 13%", tax_no: "", tax_value: "34.39"}
]
如您所见,我有 3 个 tax_id:1、2 和 3。我可以有很多,但为了简单起见,我只放了 3 个。
我需要遍历这个对象数组并得出另一个对象数组,它们的总数按tax_id:
[
{tax_name: "GST 5%", total_tax: sum of tax_value for tax_id = 1},
{tax_name: "QST 9.975%", total_tax: sum of tax_value for tax_id = 3},
{tax_name: "HST 13%", sum of tax_value for tax_id = 2}
]
之后我可以遍历这个数组并显示每个税款的总计,添加小计并显示总发票。
另外,我应该按 tax_select 对它们进行排序,但这是我可以忍受的。
我尝试过:其中 selected_taxes 是第一个对象数组
for (i = 0; i < selected_taxes.length; i++){
var sum = 0;
$.each( selected_taxes[i], function( tax_id, tax_value ) {
sum += tax_value;
});
console.log(sum);
}
但没有运气。
非常感谢您的帮助或建议。
【问题讨论】:
-
我认为您不需要嵌套循环。
-
同意,但是我怎样才能通过 tax_id 获得只有第一个对象数组的总数?
-
当您在对象上循环时,查看它是什么 taxId 并为每个不同的 taxId 生成一个总和。
-
谢谢大家!我喜欢 Stackoverflow!爱它!我现在在做什么?我有 4 个答案,都是有效答案!
-
祝你编码顺利。如果您还有什么需要帮助的,请告诉我们。
标签: javascript jquery arrays loops object