如何从飞镖列表中添加两个值

Posted

技术标签:

【中文标题】如何从飞镖列表中添加两个值【英文标题】:How to add two values from list in dart 【发布时间】:2022-01-20 19:48:10 【问题描述】:

这是比萨饼价格列表

  const pizzaPrices = 
    'margherita': 5.5,
    'pepperoni': 7.5,
    'vegetarian': 6.5,
  ;

如何计算给定订单的总数。 如果是玛格丽塔和意大利辣香肠,那么应该是 13 美元。

const order = ['margherita', 'pepperoni'];

如何添加到列表中

【问题讨论】:

【参考方案1】:
  const pizzaPrices = 
    'margherita': 5.5,
    'pepperoni': 7.5,
    'vegetarian': 6.5,
  ;
  const order = ['margherita', 'pepperoni'];
  var total=0.0;
  order.forEach((item)
    total+=pizzaPrices[item]??0.0;  
  );
  print("Total : "+total.toString());

【讨论】:

这里的if 声明是不必要的。将if 的主体移动到forEach 回调中,并完全摆脱if 好吧,编辑后,我觉得很好。【参考方案2】:

有几种方法可以计算总数。一种方法是使用fold:

final total =
    order.fold<double>(0.0, (prev, elem) => prev + pizzaPrices[elem]!);

另一种方法是遍历订单并命令式地将总数相加:

var total = 0.0;
for (final elem in order) 
  total += pizzaPrices[elem]!;

为了添加到您的列表中,您可以调用列表中的add 方法:

order.add('vegetarian');

但是,const 列表无法修改,因此您必须将 order 更改为声明为 finalvar

final order = ['margherita', 'pepperoni'];

【讨论】:

【参考方案3】:

因此,如果您使用它,则不必定义自己的 ```fold`` 函数。

var sum = [1, 2, 3].reduce((a, b) => a + b);

您可以访问此以获得更多信息,https://github.com/dart-lang/sdk/issues/1649

或者

num sum = 0;
for (num e in [1,2,3]) 
  sum += e;

【讨论】:

我建议不要使用reduce 来支持fold。原因是,reduce 在集合为空时会抛出异常。想象一下,如果您想在客户选择商品时显示订单的成本,订单一开始会是空的,如果您没有额外的代码来处理这种情况,这将导致异常。【参考方案4】:
  const pizzaPrices = 
    'margherita': 5.5,
    'pepperoni': 7.5,
    'vegetarian': 6.5,
  ;
  const order = ['margherita', 'pepperoni'];
  
  var total=0.0;
  order.forEach((item)
     pizzaPrices.forEach((name,price)
       if(name==item)
         total=total+price;
       
     );
  );
  
  print("Total : "+total.toString());
  

【讨论】:

这不能有效地利用地图。而不是使用foreach 循环遍历每个映射条目,只需使用item 变量将[] 下标到pizzaPrices 映射中。 是的,你是对的,请检查我的第二个答案【参考方案5】:
void main() 
  const pizzaPrices = 
    'margherita': 5.5,
    'pepperoni': 7.5,
    'vegetarian': 6.5,
  ;

  var x = pizzaPrices['margherita'];
  var y = pizzaPrices['pepperoni'];

  List xy = [];

  xy.add(x);
  xy.add(y);

  double somme = 0;

  xy.forEach((var element) => somme += element);

  print(somme);

【讨论】:

以上是关于如何从飞镖列表中添加两个值的主要内容,如果未能解决你的问题,请参考以下文章

如何在飞镖列表中获取重复值的总和?

如何从两个列表框保存文件c#

如何从飞镖颤动中的键或键值对获取索引

如何从json获取数据中对两个或多个值求和

飞镖列表最小值/最大值

如何不在列表飞镖中重复相同的项目?