Dart:如何迭代嵌套 Map 中数组中的对象?
Dart: How to iterate over objects in an array in a nested Map?
这是我在 Dart 中使用的地图数据结构的当前状态:
Map database = {
'campusConnect': {
'hashtags': [
{
'id': 4908504398,
'title': '#NeverGiveUp!',
'author': 'ABC',
},
{
'id': 430805,
'title': '#ItAlwaysTakesTime',
'author': 'XYZ'
}
]
}
};
我想查看主题标签数组。遍历该数组中的每个对象,我想将 'id' 字段与我已有的一些数字进行比较。我该怎么做?
到目前为止,这是我尝试过的:
database['campusConnect']['hashtags'].map( (item) {
print('I am here ...');
if (item['id'] == hashtagId) {
print(item['title']);
}
});
我不知道为什么,但它没有给我任何错误并且不能同时工作。当我 运行 它时,它甚至不打印“我在这里......”。
注意 if 块中的标识符“hashtagId”:
if (item['id'] == hashtagId) { ... }
这是作为参数传递给函数的。为简单起见,我没有显示函数,但假设这是我收到的一个 int 类型的参数
我该如何完成?
下面的方法可以解决你的问题。
void test(){
final hashTags = database['campusConnect']['hashTags'];
if(hashTags is List){
for(var i=0; i<hashTags.length; i++){
final id = hashTags[i]['id'];
if(id == hashtagId){
// do something
}
}
}
}
Dart 足够聪明,可以跳过不执行任何操作的代码。在您的情况下,您没有使用 map()
函数的结果。尝试用 forEach()
更改它并修复 hashTags
拼写错误
database['campusConnect']['hashTags'].forEach((item) {
print('I am here ...');
if (item['id'] == hashtagId) {
print(item['title']);
}
});
这是我在 Dart 中使用的地图数据结构的当前状态:
Map database = {
'campusConnect': {
'hashtags': [
{
'id': 4908504398,
'title': '#NeverGiveUp!',
'author': 'ABC',
},
{
'id': 430805,
'title': '#ItAlwaysTakesTime',
'author': 'XYZ'
}
]
}
};
我想查看主题标签数组。遍历该数组中的每个对象,我想将 'id' 字段与我已有的一些数字进行比较。我该怎么做?
到目前为止,这是我尝试过的:
database['campusConnect']['hashtags'].map( (item) {
print('I am here ...');
if (item['id'] == hashtagId) {
print(item['title']);
}
});
我不知道为什么,但它没有给我任何错误并且不能同时工作。当我 运行 它时,它甚至不打印“我在这里......”。
注意 if 块中的标识符“hashtagId”:
if (item['id'] == hashtagId) { ... }
这是作为参数传递给函数的。为简单起见,我没有显示函数,但假设这是我收到的一个 int 类型的参数
我该如何完成?
下面的方法可以解决你的问题。
void test(){
final hashTags = database['campusConnect']['hashTags'];
if(hashTags is List){
for(var i=0; i<hashTags.length; i++){
final id = hashTags[i]['id'];
if(id == hashtagId){
// do something
}
}
}
}
Dart 足够聪明,可以跳过不执行任何操作的代码。在您的情况下,您没有使用 map()
函数的结果。尝试用 forEach()
更改它并修复 hashTags
拼写错误
database['campusConnect']['hashTags'].forEach((item) {
print('I am here ...');
if (item['id'] == hashtagId) {
print(item['title']);
}
});