#javascript #typescript
Вопрос:
Я работаю над угловым приложением. У меня есть массив следующим образом:
data = [
{
num1:12.233,
num2: 13.345
},
{
num1:10.233,
num2: 23.345
},
{
num1:18.233,
num2: 33.345
}
]
Аналогично, во время выполнения у меня может быть много элементов. Я хочу обойти массив таким образом, чтобы я мог добавить все num1 и разделить их на количество присутствующих num1. Например, я хочу написать код, который может принимать num1 из каждого элемента
12.233 10.233 18.233 / 3(total num1 elements in array)
Аналогично для num2.
Как я могу это сделать?
Комментарии:
1. почему бы вам не использовать цикл for (от 0 до длины массива или использовать foreach), чтобы суммировать его и разделить на длину массива?
2. const avg = data.reduce((previousValue, currentValue) => previousValue currentValue.num1, 0) / data.length;
Ответ №1:
Вы можете просто использовать reduce
, чтобы получить общее количество элементов, а затем разделить его на data.length
const data = [
{
num1: 12.233,
num2: 13.345,
},
{
num1: 10.233,
num2: 23.345,
},
{
num1: 18.233,
num2: 33.345,
},
];
const avg = data.reduce((acc, curr) => acc curr.num1, 0) / data.length;
console.log(avg);
Для среднего значения num2
then вы можете аналогичным образом выполнить следующее:
const avg = data.reduce((acc, curr) => acc curr.num2, 0) / data.length;
Вы также можете получить average
, используя a single iteration
как:
const data = [
{
num1: 12.233,
num2: 13.345,
},
{
num1: 10.233,
num2: 23.345,
},
{
num1: 18.233,
num2: 33.345,
},
];
const [avgNum1, avgNum2] = data
.reduce((acc, curr) => [acc[0] curr.num1, acc[1] curr.num2], [0, 0])
.map((n) => n / data.length);
console.log(avgNum1, avgNum2);
Ответ №2:
Вы можете перебирать data
и добавлять значения num1
и num2
к переменной, а затем делить ее на длину data
(которая равна 3).
const data = [
{
num1: 12.233,
num2: 13.345
},
{
num1: 10.233,
num2: 23.345
},
{
num1: 18.233,
num2: 33.345
}
]
let num1 = 0;
let num2 = 0;
for (let i = 0; i < data.length; i ) {
num1 = data[i].num1;
num2 = data[i].num2;
}
const num1Avg = num1 / data.length;
const num2Avg = num2 / data.length;
console.log(`Average of num1: ${num1Avg}`)
console.log(`Average of num2: ${num2Avg}`)
Ответ №3:
пусть среднее значение = data.reduce( (accumVariable, curValue) => accumVariable curValue.num1 , 0 ) / data.length
Комментарии:
1. Вы только что скопировали это снизу?
2. нет, после того, как я опубликовал, я нашел аналогичный ответ