flutter - Flutter 在数组中添加项目,但在另一个数组中匹配 id
问题描述
我有这样的数据
{
"Categories": [{
"ID": 1064,
"Name": "Pizza",
"Subcategories": [{
"ID": 87,
"CategoryID": 1064,
"CategoryName": "Pizza",
"Items": [{
"ID": 1195,
"Name": "Fajita Pizza (S)"
"IsFeatured": true,
},
{
"ID": 1196,
"Name": "Fajita Pizza (M)"
},
{
"ID": 1197,
"Name": "Fajita Pizza (L)"
}
]
},
{
"ID": 87,
"CategoryID": 1064,
"CategoryName": "Pizza",
"Items": [{
"ID": 1195,
"Name": "Fajita Pizza (S)"
},
{
"ID": 1196,
"Name": "Fajita Pizza (M)"
},
{
"ID": 1197,
"Name": "Fajita Pizza (L)"
}
]
}
]
},
{
"ID": 1064,
"Name": "Pizza",
"Subcategories": [{
"ID": 87,
"CategoryID": 1064,
"CategoryName": "Pizza",
"Items": [{
"ID": 1195,
"Name": "Fajita Pizza (S)"
"IsFeatured": true,
},
{
"ID": 1196,
"Name": "Fajita Pizza (M)"
},
{
"ID": 1197,
"Name": "Fajita Pizza (L)"
}
]
}]
},
{
"ID": 1084,
"Name": "beverages",
"Description": null,
"Image": null,
"StatusID": 1,
"LocationID": 2112,
"Subcategories": []
}
],
"description": "Success",
"status": 1
}
我需要做的是在单个数组中添加子类别中的所有项目。它的工作正常它像这样工作
Future<List> dosomestuff() async {
print(WishList.wishlistArray);
http.Response res = await http.get(
'http://retailapi.airtechsolutions.pk/api/menu/2112',
);
Map<String, dynamic> map = json.decode(res.body);
if (map['description'] == "Success") {
print('show kr ');
List<dynamic> data = map["Categories"];
data.forEach((category) {
if (category['Subcategories'] != null) {
category['Subcategories'].forEach((subcategory) {
items['Items'].addAll(
subcategory['Items']
);
});
}
});
}
}
现在有一个问题,我只需要添加那些 ID 在我的另一个数组中的项目。
其他数组是这个数组中WishList.wishlistArray
的数据看起来像这样
[1217, 1216, 1195, 1196, 1197]
我需要的是我只需要添加那些 Id 在这个数组中的项目
解决方案
您可以使用List 的.where()方法按 ID 过滤项目。试试这个代码:
final allowedItemIds = [1217, 1216, 1195, 1196, 1197];
List<dynamic> data = map["Categories"];
data.forEach((category) {
if (category['Subcategories'] != null) {
category['Subcategories'].forEach((subcategory) {
final itemsToAdd = subcategory['Items'];
final filteredItemsToAdd =
itemsToAdd.where((item) => allowedItemIds.contains(item['ID']));
items['Items'].addAll(filteredItemsToAdd);
});
}
},
);
推荐阅读
- excel - 为什么遵循相同初始化机制的 2 个用户表单表现不同?
- java - 阻止 Eclipse 自动插入分号
- mule - XML to Object MULE 具有相同名称的重复节点
- android - 从 Canvas 绘图时不反映 Webview 的编程滚动
- c# - 如何通过将字符串转换为 System.Web.HttpPostedFileBase 将图像保存在数据库中
- javascript - 获取 JSON 对象元素的数量
- java - Spring Data 从 Vault 或其他受保护的源读取 MongoDB 密码
- database - 了解如何填充 MS Access 2013 中的特定表
- finance - 输入和输出消息的 Swift 应用程序标头标准格式
- angular - 地图的 HTML5 角度输入()