Javascript - Использование Math.round после процентной функции - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть функция расчета, используемая для определения процентной разницы между двумя значениями в массиве.

После выполнения моих вычислений возвращаемые значения имеют десятичную форму, например

0: 6.439999737456044
​
1: 7.7490311455816805
​
2: 2.3720164855984383
​
3: 4.12554213772474

Я пытаюсь округлить каждое число в массиве до ближайшего целого числа. Таким образом, индекс 0 = 6, индекс 1 = 8, индекс 2 = 2, индекс 3 = 4.

Я использую метод math.round в конце моего вычисления, и он не влияет на числа, возвращающиеся как они возвращаются как десятичные дроби, показанные выше.

вот мой код:

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

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

math.Round не изменяет исходное значение. Вам необходимо присвоить результат переменной или вернуть его из функции. Вы хотите убрать это из l oop. Ничто после return в l oop не будет выполнено.

Что-то вроде:

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);

EDIT: Я только что увидел, что у вас уже есть возвращаемое значение .

Добавление некоторых лакомых кусочков в общий стиль кода JavaScript:

  • Имена переменных TitleCased обычно зарезервированы для конструкторов, то есть функций, которые создают объекты и классы. Если вы используете TypeScript, вы увидите его и для типов, и для интерфейсов. Общая картина заключается в том, что заглавие используется для сущностей.
    • по умолчанию для переменных и функций должен быть camelCase, за исключением исключения, отмеченного выше.
  • Array является зарезервированным словом и не может использоваться в качестве имени переменной. Если вы хотите использовать Array.prototype.forEach, синтаксис будет [1,2,3,4].forEach((num) => doSomething(num))
0 голосов
/ 24 апреля 2020

Просто наберите Math.floor(val) или ~~val, если вы имеете дело с неотрицательными числами

...