Javascript 错误结果百分比的计算

Javascript 错误结果百分比的计算,javascript,html,Javascript,Html,我有一个HTML表,其中包含一些数据。我正在将这些数据转换成百分比,以将它们填充到UI上的HTML表中 到目前为止我所做的: 使用基本公式计算百分比,即(数量/总数)100 这是给我的标题行,即一行正确的结果 对于第二行,我应用了相同的公式,但得到了一些错误的结果 片段 const数据=[ { “金额”:518212, “账单日期”:“2018-08-04”, “出口”:“JAYANAGAR” }, { “金额”:104801, “账单日期”:“2018-08-04”, “出口”:“MAL

我有一个HTML表,其中包含一些数据。我正在将这些数据转换成百分比,以将它们填充到
UI
上的HTML表中

到目前为止我所做的:

  • 使用基本公式计算百分比,即
    (数量/总数)100
  • 这是给我的标题行,即一行正确的结果
  • 对于第二行,我应用了相同的公式,但得到了一些错误的结果
片段

const数据=[
{
“金额”:518212,
“账单日期”:“2018-08-04”,
“出口”:“JAYANAGAR”
},
{
“金额”:104801,
“账单日期”:“2018-08-04”,
“出口”:“MALLESHWARAM”
},
{
“金额”:138151,
“账单日期”:“2018-08-04”,
“出口”:“科拉尔”
},
{
“金额”:628358,
“账单日期”:“2018-08-05”,
“出口”:“JAYANAGAR”
},
{
“金额”:115223,
“账单日期”:“2018-08-05”,
“出口”:“MALLESHWARAM”
},
{
“金额”:134107,
“账单日期”:“2018-08-05”,
“出口”:“科拉尔”
},
{
“金额”:177866,
“账单日期”:“2018-08-06”,
“出口”:“JAYANAGAR”
},
{
“金额”:66095,
“账单日期”:“2018-08-06”,
“出口”:“科拉尔”
}
]
const formatData=函数(数据){
const billdates=[]
const outlets=[]
data.forEach(元素=>{
if(billdates.indexOf(element.billdate)=-1){
billdates.push(element.billdate)
}
if(出口指数)(元件出口)=-1){
插座。推动(元件。插座)
}
})
返回{
数据,
比尔达茨,
经销店,
}
}
const renderTable=函数(数据){
billdates=data.billdates
outlets=数据点outlets
data=data.data
const tbl=document.getElementById('tbl')
const table=document.createElement('表')
const thead=document.createElement('thead')
让headerRow=document.createElement('tr')
设th=document.createElement('th')
th.innerHTML='Bill ______; Date'
头错误追加子项(th)
设grandTotal=0
const outletWiseTotal={}
th=document.createElement('th')
th.innerHTML='Total1'
头错误追加子项(th)
outlets.forEach(元素=>{
th=document.createElement('th')
th.innerHTML=元素
头错误追加子项(th)
outletWiseTotal[元素]=0
data.forEach(el=>{
如果(出口标高==元件){
outletWiseTotal[element]+=parseInt(el.amount)
}
})
grandTotal+=outletWiseTotal[元素]
})
thead.appendChild(headerRow)
headerRow=document.createElement('tr')
th=document.createElement('th')
th.innerHTML='Total'
头错误追加子项(th)
outlets.forEach(元素=>{
th=document.createElement('th')
//log(outletWiseTotal[element]);
常量测试=(outletWiseTotal[元素]/grandTotal)*100
常量fix=`${test.toFixed(2)}%`
console.log(fix)//这一行为“Total”给出了正确的结果
th.innerHTML=fix
th.classList.add('text-right')
//按ol计算的总数
头错误追加子项(th)
})
th=document.createElement('th')
th.innerHTML='100%'//总计
th.classList.add('text-right')
//总计
headerRow.insertBefore(th,headerRow.children[1])
thead.appendChild(headerRow)
表2.追加子项(THAD)
const tbody=document.createElement('tbody')
billdates.forEach(元素=>{
常量行=document.createElement('tr')
td=document.createElement('td')
td.innerHTML=元素
行。追加子行(td)
设总数=0
outlets.forEach(outlets=>{
设el=0
data.forEach(d=>{
如果(d.billdate==元素&d.outlet==出口){
总计+=已解析整数(d.金额)
el=d.金额
}
})
td.classList.add('text-right')
常数测试1=(el/总计)*100
console.log(test1)//这一个对第一列给出了错误的结果,它给出了100%,这是错误的
td=document.createElement('td')
td.innerHTML=el.toLocaleString('en-in')
行。追加子行(td)
})
td=document.createElement('td')
td.innerHTML='100%'//总日期
td.classList.add('text-right')
console.log(total)//总日期
row.insertBefore(td,row.children[1])
tbody.appendChild(第行)
})
表2.附件子项(t正文)
tbl.innerHTML=“”
tbl.appendChild(表)
table.classList.add('table')
table.classList.add('table-striped')
table.classList.add('table-bordered')
}
const formatteddata=格式化数据(数据)
可渲染(格式化数据)

当我分析你的代码时,它会返回正确的记录,因为这是你的计算

var test1 = ((el / total) * 100);
当第一次执行时,
el
total
的值将是相同的,这就是它返回100%的原因

检查我下面的日志

(index):119 (518212/518212)*100 == 100    
(index):119 (104801/623013)*100 == 16.821639355840087    
(index):119 (138151/761164)*100 == 18.14996505352329

您能告诉我计算的预期值和流程吗?

检查此更新的代码

var数据=[{“金额”:518212,“账单日期”:“2018-08-04”,“出口”:“JAYANAGAR”},{“金额”:104801,“账单日期”:“2018-08-04”,“出口”:“MALLESHWARAM”},{“金额”:138151,“账单日期”:“2018-08-04”,“出口”:“KOLAR”},{“金额”:628358,“账单日期”:“2018-08-05”,“出口”:“JAYANAGAR”},{“金额”:115223,“账单日期”:“2018-08-05”,“出口”:“MALLESHWARAM”},{:134107,“billdate”:“2018-08-05”,“outlet”:“KOLAR”},{“金额”:177866,“billdate”:“2018-08-06”,“outlet”:“JAYANAGAR”},{“金额”:66095,“billdate”:“2018-08-06”,“outlet”:“KOLAR”}]
/*风险值数据=[
{
金额:518212,
账单日期:“2018-08-04”,
出口:“JAYANAGAR”,
},
{
金额:104801,
账单日期:“2018-08-04”,
出口:“MALLESHWARAM”,
},
{
金额:138151,
账单日期:“2018-08-04”,
出口:'KOLAR',
},
]
*/
让formatData=函数(数据){
让billdates=[];
让出口=[];
data.forEach(元素=>{
if(billdates.indexOf(element.billdate)=-1){
推送(element.billdate);
}
if(出口指数)(元件出口)=-1){
经销店