【问题标题】:How to access map keys through index? Dart如何通过索引访问地图键?镖
【发布时间】:2020-03-03 17:43:10
【问题描述】:
dartques = {'Color':[], 'Fruits':[], 'Hobbies':[]};

如何使用地图中的索引访问值? 我只需要使用索引访问键或值。 就像我们在列表中所做的那样
=>list[1]

【问题讨论】:

标签: dart


【解决方案1】:

你可以这样得到它

var element = dartques.values.elementAt(0);

对于 Dart 2.7+ 你也可以编写扩展函数

extension GetByKeyIndex on Map {
  elementAt(int index) => this.values.elementAt(index);
}

var element = dartques.elementAt(1);

【讨论】:

  • 到目前为止我做了什么??!就是这样.. [:
【解决方案2】:

您可以使用keysvalues methods 将其转换为两个列表:

var ques = {'Color':['a'], 'Fruits':['b'], 'Hobbies':['c']};
List keys = ques.keys.toList();
List values = ques.values.toList();
print (keys);
print (values);

输出:

[Color, Fruits, Hobbies]
[[a], [b], [c]]

所以你可以正常访问它,例如使用keys[0]

【讨论】:

    【解决方案3】:

    通过索引访问值,有两种方法:

    1. 使用key通过索引和值获取Key:

       final key = dartques.keys.elementAt(index);
       final value = dartques[key];
      
    2. 通过索引获取值:

       final value = dartques.values.elementAt(index);
      

    您可以根据地图上存储数据的方式和内容来选择方法。

    例如,如果您的地图包含有 duplicate 值的数据,我建议您使用第一种方法,因为它允许您首先在索引处获取 key,然后是 value,这样您就可以知道该值是否为所需值。

    但如果您不关心duplication,只想根据索引找到一个值,那么您应该使用第二种方法,因为它直接为您提供值。

    注意:根据Answer By Genchi Genbutsu,您还可以使用扩展方法为您提供方便。

    重要: 由于 dart 中 Map 的默认实现是 LinkedHashmap,所以你很幸运。否则 Generic Map 以在许多编程语言中不维护顺序而闻名。

    如果询问默认为HashMap 的任何其他语言,则可能无法回答。

    【讨论】:

    • 很好的答案,谢谢。事实上,关键是 dart 的 Map 默认为 LinkedHashmap 以保持顺序。
    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2015-12-14
    相关资源
    最近更新 更多