【发布时间】:2020-03-03 17:43:10
【问题描述】:
dartques = {'Color':[], 'Fruits':[], 'Hobbies':[]};
如何使用地图中的索引访问值?
我只需要使用索引访问键或值。
就像我们在列表中所做的那样=>list[1]
【问题讨论】:
标签: dart
dartques = {'Color':[], 'Fruits':[], 'Hobbies':[]};
如何使用地图中的索引访问值?
我只需要使用索引访问键或值。
就像我们在列表中所做的那样=>list[1]
【问题讨论】:
标签: dart
你可以这样得到它
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);
【讨论】:
您可以使用keys 和values 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]。
【讨论】:
通过索引访问值,有两种方法:
使用key通过索引和值获取Key:
final key = dartques.keys.elementAt(index);
final value = dartques[key];
通过索引获取值:
final value = dartques.values.elementAt(index);
您可以根据地图上存储数据的方式和内容来选择方法。
例如,如果您的地图包含有 duplicate 值的数据,我建议您使用第一种方法,因为它允许您首先在索引处获取 key,然后是 value,这样您就可以知道该值是否为所需值。
但如果您不关心duplication,只想根据索引找到一个值,那么您应该使用第二种方法,因为它直接为您提供值。
注意:根据Answer By Genchi Genbutsu,您还可以使用扩展方法为您提供方便。
重要:
由于 dart 中 Map 的默认实现是 LinkedHashmap,所以你很幸运。否则 Generic Map 以在许多编程语言中不维护顺序而闻名。
如果询问默认为HashMap 的任何其他语言,则可能无法回答。
【讨论】:
Map 默认为 LinkedHashmap 以保持顺序。