Вам нужно только рассчитать общую сумму, используя уменьшение.Вы можете использовать геттер
get total()
{
return this.items.reduce((sum,x)=>
({quantity:1,
priceWhenBought:sum.priceWhenBought+x.quantity*x.priceWhenBought}),
{quantity:1,priceWhenBought:0}).priceWhenBought;
}
//In your .html
{{total}}
Краткое объяснение об использовании геттера только в том, что вы можете ссылаться в html на переменную, такую как
{{myvariable}}
Если выиспользовать геттер.Это функция, начинающаяся с get, показывающая результат функции
{{myget}}
get myget()
{
return "Hello word";
}
О сокращении:
уменьшение имеет три аргумента.Эти аргументы должны быть одного типа массива.Поэтому, если наш массив является массивом объектов, три аргумента должны быть одного типа.Первый аргумент - это «накопитель», второй аргумент - это элемент массива, а третий аргумент - «начальное значение».Элемент "transform" тоже должен быть того же типа
Итак, если наш массив представляет собой массив чисел, то можно сделать
[1,4,7,2].reduce((sum,x,0)=>(sum+x))
Если у нас есть массив элементов, таких как
this.total2=[
{x:1},
{x:4},
{x:7},
{x:2}
].reduce((sum,x)=>({x:sum.x+x.x})) //total2 will be{x:14}
Обратите внимание, что это способ уменьшить ((<<>, ) => ()) Наш элемент может быть настолько сложным, что мы хотим, например,
this.total2=[
{x:1,y:3},
{x:4,y:4},
{x:7,y:5},
{x:2,y:6}
].reduce((sum,x)=>({x:sum.x+x.x,y:sum.y+x.y})) //return {x:14,y:18}
Снова посмотрите, что «результат» должен быть объектом со свойствами x и y.Если вы не используете feed с третьим аргументом, используйте take для первого элемента массива и выполняйте итерации по остальным.Это причина, потому что если мы сделаем что-то вроде
this.total2=[
{x:2,y:3},
{x:4,y:4},
{x:7,y:5},
{x:2,y:6}
].reduce((sum,x)=>({x:sum.x+x.x*x.y,y:1})) //return {x:65,y:1}
//return 2+4*4+7*5+2*6 ¡¡at first sum={x:2,y:3}, but not use the "y"
//to calculate the product: is NOT 2*3
//So, we need add the third argument
.reduce((sum,x)=>({x:sum.x+x.x*x.y,y:1}),{x:0,y:0})