我在数组中有8个项目,我想计算它们之间的差异。但我的代码有缺陷,不同的数组集输出错误。
这里有什么问题?
const calculate_different_in_percentage = (num1, num2) => {
//zero handling
if (num2 === 0 && num1 > num2) {
return 100
}
if (num1 === 0 && num1 < num2) {
return 100
}
let result = 0
if (num1 > num2) {
result = ((num1 - num2) / num1) * 100
} else if (num2 > num1) {
result = ((num2 - num1) / num2) * 100
} else {
result = 0
}
if (!Number.isFinite(result)) result = 0
return result.toFixed(1)
}
从362到1916年,差异应该是529%,但在我的情况下并没有发生,也无法发现错误。
答案 0 :(得分:0)
从362到1916年差异应该是529%但是没有发生 在我的情况下,无法发现什么是错的。
您正在按照出现顺序计算两个元素之间的差异百分比,而不仅仅是您在问题中提到的百分比。
简单地使用这个简单的代码来获取百分比
const calculate_different_in_percentage = (num1, num2) => (num2 != 0 && num1 != 0) ? ((num2/num1)*100).toFixed(1) : 0;
<强>解释强>
((num2/num1)*100).toFixed(1)
0
<强>演示强>
let arr = [{ "total_count": 40}, { "total_count": 20},{"total_count": 0}, {"total_count": 100}, {"total_count": 362}, {"total_count": 1916}, {"total_count": 4046}, {"total_count": 2473}];
const calculate_different_in_percentage = (num1, num2) => (num2 != 0 && num1 != 0) ? ((num2 / num1) * 100).toFixed(1) : 0;
const result = [];
arr.forEach((obj, i) => {
if (!i) return
result.push({
count: obj.total_count,
difference: calculate_different_in_percentage(arr[i - 1].total_count, obj.total_count)
})
})
console.log(result);