List 在Dart中作为地图的值列出
我想创建一个成员地图,但每个成员都有3个属性:名字、姓氏和用户名。我怎样才能像列表一样创建,但有一个映射 所以我想要一些类似的东西:List 在Dart中作为地图的值列出,list,maps,dart,List,Maps,Dart,我想创建一个成员地图,但每个成员都有3个属性:名字、姓氏和用户名。我怎样才能像列表一样创建,但有一个映射 所以我想要一些类似的东西: var membres= {['lastname': 'Bonneau', 'firstname': 'Pierre', 'username': 'mariobross'], ['lastname': 'Hamel', 'firstname': 'Al
var membres= {['lastname': 'Bonneau',
'firstname': 'Pierre',
'username': 'mariobross'],
['lastname': 'Hamel',
'firstname': 'Alex',
'username': 'Queenlatifa'],
};
正如你所知,这个代码不起作用。但是它很好地解释了我要做的事情。如果我正确理解了你的意图,你想要一个地图列表。你所拥有的是正确的,只是你把
[
和{
搞混了。以下方法有效:
var membres = [
{'lastname': 'Bonneau',
'firstname': 'Pierre',
'username': 'mariobross'},
{'lastname': 'Hamel',
'firstname': 'Alex',
'username': 'Queenlatifa'}
];
例如,要获取所有用户名的列表:
print(membres.map((v) => v['username']));
如果我正确理解您的意图,您希望有一个地图列表。您所拥有的是正确的,只是您混淆了
[
和{
。以下操作有效:
var membres = [
{'lastname': 'Bonneau',
'firstname': 'Pierre',
'username': 'mariobross'},
{'lastname': 'Hamel',
'firstname': 'Alex',
'username': 'Queenlatifa'}
];
例如,要获取所有用户名的列表:
print(membres.map((v) => v['username']));
我认为你混淆了这两个概念 阅读本语言简介: 列表是元素列表,可以用缩写
[…]
语法表示:
var list=[1,2,“foo”,3,新的Date.now(),4];
然而,地图可以用花括号速记语法表示:
var={//映射文字
//关键值
‘第一’:‘鹧鸪’,
“第二个”:“斑鸠”,
“第五个”:“金戒指”
};
因此,让我们修改您的代码以工作:
var成员=[
{
“lastname”:“Bonneau”,
“名字”:“皮埃尔”,
“用户名”:“mariobross”
},
{
“lastname”:“Hamel”,
“名字”:“亚历克斯”,
“用户名”:“Queenlatifa”
}
];
例如,您可以按如下方式打印信息:
members.forEach((e){
印刷品(e['firstname']);
});
我认为您混淆了这两种结构
阅读本语言简介:
列表是元素列表,可以用缩写[…]
语法表示:
var list=[1,2,“foo”,3,新的Date.now(),4];
然而,地图可以用花括号速记语法表示:
var={//映射文字
//关键值
‘第一’:‘鹧鸪’,
“第二个”:“斑鸠”,
“第五个”:“金戒指”
};
因此,让我们修改您的代码以工作:
var成员=[
{
“lastname”:“Bonneau”,
“名字”:“皮埃尔”,
“用户名”:“mariobross”
},
{
“lastname”:“Hamel”,
“名字”:“亚历克斯”,
“用户名”:“Queenlatifa”
}
];
例如,您可以按如下方式打印信息:
members.forEach((e){
印刷品(e['firstname']);
});
你是说像这样
// 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];
}
//FirstName=>LastName=>Value
var lookup=newmap();
//获取/设置如下所示的值
void setValue(字符串名、字符串名、字符串值){
如果(!lookUp.containsKey(firstName))
lookUp[firstName]=新映射();
查找[firstName][lastName]=值;
}
String getValue(String firstName、String lastName){
如果(!lookUp.containsKey(firstName))返回“”;
返回查找[firstName][lastName];
}
你是说像这样
// 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];
}
//FirstName=>LastName=>Value
var lookup=newmap();
//获取/设置如下所示的值
void setValue(字符串名、字符串名、字符串值){
如果(!lookUp.containsKey(firstName))
lookUp[firstName]=新映射();
查找[firstName][lastName]=值;
}
String getValue(String firstName、String lastName){
如果(!lookUp.containsKey(firstName))返回“”;
返回查找[firstName][lastName];
}
如果您真的不需要映射
,那么使用类来改进代码的结构怎么样:
类成员{
字符串名;
字符串lastname;
字符串用户名;
成员(this.firstname、this.lastname、this.username);
}
main(){
最终成员=新列表();
增加(新成员('Pierre','Bonneau','mariobross');
成员。添加(新成员(“Alex”、“Hamel”、“Queenlatifa”);
//使用成员
}
如果您真的不需要映射
,那么使用类来改进代码的结构怎么样:
类成员{
字符串名;
字符串lastname;
字符串用户名;
成员(this.firstname、this.lastname、this.username);
}
main(){
最终成员=新列表();
增加(新成员('Pierre','Bonneau','mariobross');
成员。添加(新成员(“Alex”、“Hamel”、“Queenlatifa”);
//使用成员
}
首先,您需要创建一个值为list的映射。别忘了初始化它
然后,如果您想填充它,您首先需要使用内置函数,如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;
});
}
首先,您需要创建一个值为list的映射。别忘了初始化它 然后,如果您想填充它,您首先需要使用内置函数,如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;
});
}