Как я могу суммировать список чисел внутри переменной, которую я сгенерировал внутри цикла forEach - PullRequest
1 голос
/ 23 января 2020

Я сделал для каждого l oop доступ к номерам из массива JSON, массив будет динамическим c и будет изменяться всегда, поэтому я выделил числа внутри переменной (переменная находится внутри л oop). Мой вопрос: как мне сложить числа, которые находятся в переменной.

Я пытался сделать для l oop внутри l oop, но это не сработало.

это выглядит примерно так:

 const arrayhours = Array.from(json_obj);
 arrayhours.forEach(e=>{ 
              const hours = parseFloat(e.hoursWorked);

console.log(hours); //returns for example 1.25 9 5 8 7 as seperate objects.
});

image of console log

Ответы [ 3 ]

2 голосов
/ 23 января 2020

Вы можете использовать Array.reduce() для получения суммы чисел в массиве.

const arrayhours = Array.from(json_obj);
arrayhours.forEach(e=>{ 
  const hours = parseFloat(e.hoursWorked);
  console.log(hours); //returns for example 1.25 9 5 8 7 as seperate objects.
});
const sum = arrayhours.reduce((acc, val) => acc + parseFloat(val.hoursWorked), 0)
0 голосов
/ 23 января 2020

const sum = arrayhours.reduce((acc, curr) => acc + parseFloat(curr.hoursWorked, 10), 0)

В комментарии AZ_ использует +c.hoursWorked, что является уловкой JS для приведения (если возможно) строки в Int. Это довольно плохой способ читать, потому что не очень читаемый. Лучше использовать функции parseInt или parseFloat.

0 голосов
/ 23 января 2020

Инициализируйте переменную с let hours = 0 перед l oop, а затем используйте +=, чтобы добавить что-то (вместо =), чтобы присвоить что-либо.

Наконец, выведите console.log из л oop:

const arrayhours = Array.from(json_obj);
let hours = 0;
arrayhours.forEach(e => { 
  const hours += parseFloat(e.hoursWorked);
});
console.log(hours);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...