javascript - Javascript - 在百分比函数后使用 Math.round
问题描述
我有一个计算函数用于确定数组中两个值之间的百分比差异。
完成我的计算后,返回的值是十进制形式,例如
0: 6.439999737456044
1: 7.7490311455816805
2: 2.3720164855984383
3: 4.12554213772474
我正在尝试将数组中的每个数字四舍五入到最接近的整数。所以索引 0 = 6,索引 1 = 8,索引 2 = 2,索引 3 = 4。
我在计算结束时使用 math.round 方法,它对返回的数字没有影响,因为它们以上面显示的小数形式返回。</p>
这是我的代码:
const Numerators = [];
const Denominators = [];
Array.forEach(({ DataValue }, i) => {
const arrToPushTo = i % 2 === 0 ? Denominators : Numerators;
arrToPushTo.push(Number(DataValue.replace(/,/g, '')));
});
const Percentage = Numerators.map((Numerator, i) => {
const Denominator = Denominators[i];
return 100 * Math.abs((Denominator - Numerator) / ((Denominator + Numerator) / 2));
math.Round(Percentage)
});
console.log(Percentage)
我也尝试过创建另一个变量const Round = math.Round(Percentage)
,但是当控制台记录这个变量时,我返回了NaN
解决方案
math.Round
不会改变原始值。您需要将结果分配给变量或从函数中返回。你也想把它移出循环。循环中的任何return
内容都不会执行。
就像是:
const Percentage = Numerators.map((Numerator, i) => {
const Denominator = Denominators[i];
return 100 * Math.abs((Denominator - Numerator) / ((Denominator + Numerator) / 2));
});
const percentages = Percentage.map((percent) => math.Round(percent));
console.log(percentages);
编辑:我刚刚看到你已经有一个返回值。
添加一些关于一般 JavaScript 代码风格的花絮:
- TitleCased var 名称通常保留给构造函数,即创建对象和类的函数。如果您使用的是 TypeScript,您也会在类型和接口中看到它。大图是标题大小写用于实体。
- 变量和函数的默认值应该是 camelCase,除了上面提到的例外。
Array
是保留字,不能用作变量名。如果你想使用Array.prototype.forEach
,语法是[1,2,3,4].forEach((num) => doSomething(num))
推荐阅读
- listview - 来自不同文件的 React-Native 更新 Listview 数据源
- postgresql - 我在哪里可以指定编译的迁移
- r - BioMart:有没有办法轻松更改我所有代码的种类?
- xamarin.android - 取消任何 StartActivityForResult 时如何获取意图数据
- sql - SQL获取特定行中总和大于给定值的所有列
- c# - 如何处理这种循环依赖?
- java - 尝试连接到 Mysql 时 Sqoop 错误
- git - git 补丁的上下文
- html - 如何以角度管理组件之间的空间
- wordpress - 如何在可变产品woocommerce中添加自定义价格