Вы не можете добавить for
l oop непосредственно внутри объекта в качестве значения, а также вы не можете ссылаться на ключи объекта или значения до того, как он был создан, поэтому даже если вы можете добавить for
, эта часть:
i < points.length
вызовет ошибку, что-то вроде "точки не определены" , поскольку объект еще не создан и точки также не существуют в памяти.
Другое дело, ключи массивов не могут быть названы, поэтому ключи team1
и team2
будут удалены из массива, останется только их значение (объекты), если вы хотите сохранить эти имена, сделайте переменную teams
объект, а не массив.
Решение вашей проблемы может быть следующим: создать функцию, которая получает массив и составляет для вас сумму, которую я использую внутри этой функции, .reduce()
метод.
let teams = [
{
name: "Real",
goal_plus: [3, 4, 2, 1],
goal_minus: [1, 0, 2, 1],
points: [3, 3, 3, 1],
points_sum: SumPoints([3, 3, 3, 1]),
},
{
name: "Barca",
goal_plus: [5, 2, 5, 1],
goal_minus: [1, 0, 0, 1],
points: [3, 3, 3, 1],
points_sum: SumPoints([3, 3, 3, 1])
}
]
function SumPoints(arr) {
return arr.reduce((a, b) => a + b, 0)
}
console.log(teams)
Другой возможный способ решить эту проблему, если вы не можете или не хотите передавать весь массив в качестве параметра во внешнюю функцию, - пустить points_sum
пустой а затем после создания массива teams
выполните некоторую работу для вычисления, используя метод al oop, такой как forEach
, см. фрагмент кода ниже:
let teams = [{
name: "Real",
goal_plus: [3, 4, 2, 1],
goal_minus: [1, 0, 2, 1],
points: [3, 3, 3, 1],
points_sum: 0
},
{
name: "Barca",
goal_plus: [5, 2, 5, 1],
goal_minus: [1, 0, 0, 1],
points: [3, 3, 3, 1],
points_sum: 0
}
]
teams.forEach(x => {
x.points_sum = x.points.reduce((a, b) => a + b, 0)
})
console.log(teams)