我想创建一个成员地图,但每个成员都有3个名称:名字,姓氏和用户名。我如何创建像一个侦听列表,但是有一张地图。
所以我希望有类似的东西:
var membres= {['lastname': 'Bonneau',
'firstname': 'Pierre',
'username': 'mariobross'],
['lastname': 'Hamel',
'firstname': 'Alex',
'username': 'Queenlatifa'],
};
如您所知,此代码不起作用。但它很好地解释了我想要做的事情。
答案 0 :(得分:3)
我认为你在这里混淆了这两个结构。
阅读以下语言简介:http://www.dartlang.org/docs/dart-up-and-running/ch02.html#lists
列表是可以使用简写[...]
语法表示的元素列表:
var list = [1, 2, "foo", 3, new Date.now(), 4];
而地图可以用大括号的简写语法表示:
var gifts = { // A map literal
// Keys Values
'first' : 'partridge',
'second' : 'turtledoves',
'fifth' : 'golden rings'
};
所以,让我们修改你的代码:
var members = [
{
'lastname': 'Bonneau',
'firstname': 'Pierre',
'username': 'mariobross'
},
{
'lastname': 'Hamel',
'firstname': 'Alex',
'username': 'Queenlatifa'
}
];
例如,您可以打印如下信息:
members.forEach((e) {
print(e['firstname']);
});
答案 1 :(得分:2)
如果我理解你的意图,你想要一个地图列表。除了混淆[
和{
之外,你所拥有的是正确的。以下作品:
var membres = [
{'lastname': 'Bonneau',
'firstname': 'Pierre',
'username': 'mariobross'},
{'lastname': 'Hamel',
'firstname': 'Alex',
'username': 'Queenlatifa'}
];
例如,要获取所有用户名的列表:
print(membres.map((v) => v['username']));
答案 2 :(得分:1)
如果您真的不需要Map
,那么使用类来改进代码结构会怎么样:
class Member {
String firstname;
String lastname;
String username;
Member(this.firstname, this.lastname, this.username);
}
main() {
final members = new List<Member>();
members.add(new Member('Pierre', 'Bonneau', 'mariobross'));
members.add(new Member('Alex', 'Hamel', 'Queenlatifa'));
// use members
}
答案 3 :(得分:0)
你的意思是这样吗?
// FirstName => LastName => Value
var lookup = new Map<String, Map<String, String>>();
// get / set values like this
void setValue(String firstName, String lastName, String value) {
if (!lookUp.containsKey(firstName))
lookUp[firstName] = new Map<String, String>();
lookUp[firstName][lastName] = value;
}
String getValue(String firstName, String lastName) {
if (!lookUp.containsKey(firstName)) return "";
return lookUp[firstName][lastName];
}
答案 4 :(得分:0)
首先,您需要创建一个值作为列表的地图。不要忘记初始化它
然后,如果要填充它,则首先需要使用内置功能(如dart中的putIfAbsent
)在列表中添加第一个对象,然后使用update
在列表中添加项目。因此,您将需要两个数组。首先放置元素,然后使用相同的键将元素添加到列表中。您也可以使用try catch来识别密钥是否存在
for (var item in days) {
var date_time = DateTime.parse(item["date"] + " 00:00:00");
_events[date_time] = _events.putIfAbsent(
date_time,
() => [
{
"title": item["title"],
"date": item["date"],
"time": reUse.get_time_am_pm_format(item["time"]),
"feature": item["feature"],
}
]);
}
for (var item in days) {
var date_time = DateTime.parse(item["date"] + " 00:00:00");
_events[date_time] = _events.update(date_time, (value) {
value.add({
"title": item["title"],
"date": item["date"],
"time": reUse.get_time_am_pm_format(item["time"]),
"feature": item["feature"],
});
return value;
});
}