Числа объединяются вместо суммирования - PullRequest
0 голосов
/ 17 апреля 2020

У меня небольшая проблема с функцией «уменьшить».

let array = [
  0: "720"
  1: "1080"
]
array.reduce((a,b) => a + b)

Есть проблема, это возвращает меня 7201080, но мне нужно 1800

Ответы [ 3 ]

5 голосов
/ 17 апреля 2020

Вам нужно преобразовать строку в число array.reduce((a,b) => +a + +b)

1 голос
/ 17 апреля 2020

Укажите начальное значение 0 для уменьшения функции обратного вызова и преобразования строки в число, используя Number()

let array = [
   "720",
   "1080"
]
console.log(array.reduce((a,b) => a + Number(b),0))
0 голосов
/ 17 апреля 2020

Вы говорите, что ваша проблема ( жирный выделение моя):

числа объединены вместо сложения

Но на самом деле это не так, и на самом деле это не ваша проблема.

Проблема real заключается в том, что нет число с твой код . Существует только строка с, и двоичный оператор инфикса + для строк определен для выполнения конкатенации строк : "A" + "b" === "Ab" // not 21.

"лучший" способ решить вашу проблему - это исправить ее в источнике , чтобы вначале вместо строк были числа:

const array = [
  720,
  1080
];

console.log(array.reduce((a, b) => a + b));
// 1800

Если это невозможно, например, потому что код, который генерирует это значение, является сторонним кодом вне вашего контроля, вы должны санировать и адаптировать данные как как только он входит в вашу систему , например, используя Array.prototype.map и parseInt, например:

const thirdPartyArray = [
  "720",
  "1080"
];

const myArray = thirdPartyArray.map(str => parseInt(str, 10));

console.log(myArray.reduce((a, b) => a + b));
// 1800
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...