flutter:将列表值匹配到映射列表键值
flutter: match list value to map list key value
这里是新手。谁知道我怎样才能将列表 x 的值与列表 y 的键 ["id"] 的值相匹配?
提前致谢!感谢任何帮助。 =)
list x = ["open_box", "close_box"];
list y =
[
{
"id": "open_box",
"name": "Open",
"action": ["open_box"]
},
{
"id": "close_box",
"name": "Close",
"action": ["open_box", "close_box", "pull_box"]
},
{
"id": "pull_box",
"name": "Pull",
"action": ["open_box", "close_box", "pull_box", "push_box"]
}
]
list x = ["open_box", "close_box"];
list y =
[
{
"id": "open_box",
"name": "Open",
"action": ["open_box"]
},
{
"id": "close_box",
"name": "Close",
"action": ["open_box", "close_box", "pull_box"]
},
{
"id": "pull_box",
"name": "Pull",
"action": ["open_box", "close_box", "pull_box", "push_box"]
}
];
var i,j;
var yy=jsonDecode(y);
for(j=0;j<=x.length;j++){
for(i=0;i<=yy.length;i++){
if(yy[i]['id'].contains(x[j])){
//Do something if true
print(yy[i]);
}
}
}
此代码比较 x[0] 意味着“open_box”到所有 y 的映射数据列表它将打印索引值,其中条件为真
List 提供了一个 where 方法,允许您根据条件过滤列表。这里我使用了 y
列表的 where
方法,并在 x
列表中搜索 y
列表中当前项目的 id
值。我检查 x
列表的搜索长度,如果它大于零,那么我们在 x
列表中找到了 id
的匹配项。 z
将保存 y
列表中与 x
列表中的 ID 匹配的项目列表。
List x = ["open_box", "close_box"];
List y =
[
{
"id": "open_box",
"name": "Open",
"action": ["open_box"]
},
{
"id": "close_box",
"name": "Close",
"action": ["open_box", "close_box", "pull_box"]
},
{
"id": "pull_box",
"name": "Pull",
"action": ["open_box", "close_box", "pull_box", "push_box"]
}
];
var z = y.where((data) => x.where((value) => value==data["id"]).length>0);
print(z);
这是预期的输出
I/flutter ( 6086): ({id: open_box, name: Open, action: [open_box]}, {id: close_box, name: Close, action: [open_box, close_box, pull_box]})
使用 for in 遍历 x,最后您可以使用 List
中的 where 方法
for (String action in x) {
dynamic temp = y.where((data) => data['id'] == action);
if (temp.isNotEmpty) {
// do someting
print(temp);
}
}
这里是新手。谁知道我怎样才能将列表 x 的值与列表 y 的键 ["id"] 的值相匹配?
提前致谢!感谢任何帮助。 =)
list x = ["open_box", "close_box"];
list y =
[
{
"id": "open_box",
"name": "Open",
"action": ["open_box"]
},
{
"id": "close_box",
"name": "Close",
"action": ["open_box", "close_box", "pull_box"]
},
{
"id": "pull_box",
"name": "Pull",
"action": ["open_box", "close_box", "pull_box", "push_box"]
}
]
list x = ["open_box", "close_box"];
list y =
[
{
"id": "open_box",
"name": "Open",
"action": ["open_box"]
},
{
"id": "close_box",
"name": "Close",
"action": ["open_box", "close_box", "pull_box"]
},
{
"id": "pull_box",
"name": "Pull",
"action": ["open_box", "close_box", "pull_box", "push_box"]
}
];
var i,j;
var yy=jsonDecode(y);
for(j=0;j<=x.length;j++){
for(i=0;i<=yy.length;i++){
if(yy[i]['id'].contains(x[j])){
//Do something if true
print(yy[i]);
}
}
}
此代码比较 x[0] 意味着“open_box”到所有 y 的映射数据列表它将打印索引值,其中条件为真
List 提供了一个 where 方法,允许您根据条件过滤列表。这里我使用了 y
列表的 where
方法,并在 x
列表中搜索 y
列表中当前项目的 id
值。我检查 x
列表的搜索长度,如果它大于零,那么我们在 x
列表中找到了 id
的匹配项。 z
将保存 y
列表中与 x
列表中的 ID 匹配的项目列表。
List x = ["open_box", "close_box"];
List y =
[
{
"id": "open_box",
"name": "Open",
"action": ["open_box"]
},
{
"id": "close_box",
"name": "Close",
"action": ["open_box", "close_box", "pull_box"]
},
{
"id": "pull_box",
"name": "Pull",
"action": ["open_box", "close_box", "pull_box", "push_box"]
}
];
var z = y.where((data) => x.where((value) => value==data["id"]).length>0);
print(z);
这是预期的输出
I/flutter ( 6086): ({id: open_box, name: Open, action: [open_box]}, {id: close_box, name: Close, action: [open_box, close_box, pull_box]})
使用 for in 遍历 x,最后您可以使用 List
中的 where 方法for (String action in x) {
dynamic temp = y.where((data) => data['id'] == action);
if (temp.isNotEmpty) {
// do someting
print(temp);
}
}